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

dokumen kueri yang bergantung pada nilai dokumen lain di mongodb

Coba tidak berkorelasi sub kueri dari 3.6 untuk kasus penggunaan Anda.

Sesuatu seperti

User.aggregate(
 [{$lookup:{
   from: "users",
   pipeline:[
    {$match: {_id:mongoose.Types.ObjectId(id)}},
    {$project: {_id:0,blockedIds:1}}
   ],
   as: "noncr"
 }},
 {$match:{
   $expr:{
     $not:[
      {$in:[
        $_id,
        {$arrayElemAt:["$noncr.blockedIds",0]}
      ]}
    ]
  }
}},
{$project:{noncr:0}}]
)

$lookup untuk menarik "blockedIds" untuk id masukan diikuti oleh $match untuk memfilter dokumen yang "_id" tidak ada dalam daftar Id yang diblokir.

$expr memungkinkan penggunaan operator perbandingan agregasi dalam tahap $match.

$arrayElemAt untuk mengambil elemen pertama dari array $lookup.

$in untuk membandingkan _id dengan blockIds.

$project dengan pengecualian untuk menghapus bidang "noncr" dari tanggapan akhir.

Harap perhatikan saat Anda menguji kueri, gunakan nama koleksi bukan nama model atau skema di atribut "dari" tahap pencarian.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Meteor $dan dengan $or

  2. Sisipkan array di mana elemen tidak ada lagi perbarui (dengan beberapa kondisi)

  3. Koneksi sederhana ke mongodb di aplikasi reaksi

  4. Bagaimana cara menangkap kesalahan saat memasukkan dokumen MongoDB yang melanggar indeks unik?

  5. Bagaimana cara menanyakan struktur pohon secara rekursif dengan MongoDB?