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

Kueri MongoDB di dalam array bersarang

Saat Anda hanya bertanding melawan satu bidang, Anda hanya perlu mengekspresikan jalur ke bidang Anda menggunakan notasi titik:

> db.user.find({"profile.wishlist._id": 2})

Seperti yang dijelaskan dalam Dokumentasi MongoDB , untuk array (seperti wishlist ) ini akan cocok dengan dokumen jika ada subdocument dalam array cocok dengan nilai field.

Harap dicatat bahwa jika Anda perlu mencocokkan dengan beberapa bidang, Anda harus menggunakan:

  • $elemMatch jika semua bidang yang cocok harus milik sama subdokumen;
  • atau beberapa bidang yang diekspresikan menggunakan notasi titik jika berbagai bidang tidak perlu dicocokkan dengan subdokumen yang sama.

Silakan bandingkan output dari kedua kueri tersebut untuk memahami hal ini:

> db.user.find({"profile.wishlist._id": 2, "profile.wishlist.name": "a1"})
//                                      ^                            ^^
//                              will return your document even if the was no 
//                              subdocument having both _id=2 and name=a1
> db.user.find({"profile.wishlist": {$elemMatch: { _id: 2, name: "a1"}}})
//                                                      ^         ^^
//                                         no result as there was no subdocument
//                                         matching  _both_ _id=2 and name=a1



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb :Periksa apakah suatu titik ada di dalam poligon yang tersimpan

  2. Memperkenalkan Bagan Pencarian di MongoDB

  3. Menanyakan Morphia dengan Id

  4. MongoDB:pengecualian di initAndListen:20 Mencoba membuat file kunci pada direktori read-only:/data/db, mengakhiri

  5. Bagaimana cara membuat kueri untuk memperbarui dokumen array bersarang di mongo?