MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm thế nào để trả lại các giá trị biến thể của mỗi sản phẩm nếu sản phẩm đó là một biến thể?

Bạn sẽ có thể đạt được điều này bằng cách sử dụng $unwind$group trong quy trình tổng hợp của bạn. Việc đầu tiên này làm phẳng mỗi thuộc tính thành một tài liệu duy nhất và trên những thuộc tính bạn có thể nhóm theo giá trị thuộc tính.

Cuối cùng, bạn có thể sử dụng $project để lấy tên mong muốn cho attributeValue :

db.collection.aggregate([
  {
    $unwind: "$attributeSet"
  },
  {
    $group: {
      _id: "$attributeSet.value",
      data: {
        "$addToSet": {
          productId: "$productId"
        }
      }
    }
  },
  {
    "$project": {
      _id: 0,
      data: 1,
      attributeValue: "$_id"
    }
  }
])

Xem ví dụ đơn giản này trên mongoplayground: https://mongoplayground.net/p/VASadZnDedc




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Không thể khởi động MongoDB dưới dạng dịch vụ

  2. Làm cách nào để nhận các giá trị thấp nhất trong bộ sưu tập MongoDB?

  3. sắp xếp theo độ dài chuỗi trong Mongodb / pymongo

  4. CẢNH BÁO Lỗi:Mã sao băng phải luôn chạy trong một phương thức gọi Fiber khi trên máy chủ

  5. Mongorestore trong Dockerfile