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

Mongodb kết hợp các truy vấn tổng hợp

Bạn có thể sử dụng các truy vấn phụ không liên quan, có sẵn từ MongoDB v3.6

db.Profile.aggregate([
  {
    $match: { is_del: false }
  },
  {
    $lookup: {
      from: "Store",
      as: "stores",
      let: {
        pid: { $toString: "$_id" }
      },
      pipeline: [
        {
          $match: {
            is_del: false,
            $expr: { $eq: ["$$pid", "$id"] }
          }
        },
        {
          $lookup: {
            from: "Item",
            as: "items",
            let: {
              sid: { $toString: "$_id" }
            },
            pipeline: [
              {
                $match: {
                  is_del: false,
                  $expr: { $eq: ["$$sid", "$sid"] }
                }
              },
              {
                $count: "count"
              }
            ]
          }
        },
        {
          $unwind: "$items"
        }
      ]
    }
  }
])

Sân chơi Mongo

Để cải thiện hiệu suất, tôi khuyên bạn nên lưu trữ các id tham chiếu dưới dạng ObjectId vì vậy bạn không cần phải chuyển đổi chúng trong mỗi bước.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Phân tích cú pháp truy vấn sql bằng cách sử dụng bộ phân tích cú pháp antlr tới tài liệu mongo bson trong Java

  2. 3 cách để có được một tuần từ một ngày trong MongoDB

  3. Tìm trong bộ sưu tập / đối tượng - SailsJS và Waterline ORM

  4. xóa scanAndOrder:true trong kết quả truy vấn MongoDB của tôi

  5. ArrayFilter trong mongoose