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

Kueri agregat Mongodb pada catatan tertentu alih-alih koleksi

Gunakan $match operator untuk memfilter dokumen yang masuk ke saluran Anda.

Dapatkan daftar id pesanan (untuk digunakan di $match pipeline dengan $in ) dengan menggunakan find() map() kursor metode:

var orderIds = db.delivery.find({"status": "DELIVERED"}).map(function(d){return d.order;});
db.orders.aggregate([
    { "$match": { "_id": { "$in": orderIds } } },
    { "$group": { "_id": "$customer", "orders": { "$sum": 1 } } }
])

Untuk MongoDB 3.2, gunakan $lookup operator yang melakukan gabungan luar kiri ke koleksi yang tidak di-sharding dalam database yang sama untuk memfilter dokumen dari koleksi "bergabung" untuk diproses.

Contoh berikut menunjukkan bagaimana Anda dapat menjalankan operasi agregasi pada orders koleksi bergabung dengan dokumen dari orders dengan dokumen dari delivery koleksi menggunakan bidang order dari delivery koleksi:

db.orders.aggregate([
    {
        "$lookup": {
            "from": "delivery",
            "localField": "_id",
            "foreignField": "order",
            "as": "delivery_orders"
        }
    },
    { "$match": { "delivery_orders.status": "DELIVERED" } },    
    { "$group": { "_id": "$customer", "orders": { "$sum": 1 } } }
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Periksa apakah ada nilai dalam koleksi mongo

  2. Perbarui bidang MongoDB menggunakan nilai bidang lain

  3. Filter Mongo $lookup menggunakan kueri bersarang

  4. Cara Mendapatkan Hari, Bulan, dan Tahun dari Tanggal di SQL

  5. Dorong nilai ke dalam array database mongodb melalui (sails js) waterline