MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mongodb menggabungkan kueri agregat

Anda dapat menggunakan sub-kueri yang tidak berkorelasi, tersedia dari 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"
        }
      ]
    }
  }
])

Taman Bermain Mongo

Untuk meningkatkan kinerja, saya sarankan Anda menyimpan id referensi sebagai ObjectId jadi Anda tidak perlu mengonversinya di setiap langkah.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara mengurutkan koleksi berdasarkan tanggal di MongoDB?

  2. Luwak findOneAndUpdate Memperbarui Beberapa Bidang

  3. mongodb schema.createIndex bukan fungsi

  4. Mengelompokkan dokumen di MongoDB dengan kondisi khusus

  5. Agregasi dalam flask-mongoengine