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

Luwak mendapatkan dokumen yang cocok dengan array

Selama Anda menyadari bahwa Anda cocok dengan ObjectId dan sebenarnya bukan apa pun dalam koleksi yang direferensikan, Anda dapat menggunakan $in operator:

db.collection.find({ "members": { "$in": [ "some id 1", "some id 2" ] } })

Di mana tentu saja itu adalah nilai ObjectId Anda yang sebenarnya.

Tetapi jika Anda benar-benar bermaksud dokumen yang memiliki array itu, maka Anda cukup memasukkan array:

db.collection.find({ "members": [ "some id 1", "some id 2" ] })

Dan jika harus memiliki kedua elemen tetapi bisa memiliki yang lain maka saat ini Anda perlu menggunakan $and ekspresi:

db.collection.find({ "$and": [ 
    { "members": "some id 1" },
    { "members": "some id 2" } 
]})

Tetapi dari rilis 2.6 dan seterusnya Anda dapat menggunakan dengan benar. $all operator untuk melakukan hal yang sama secara efektif:

db.collection.find({ "members": { "$all": [ "some id 1", "some id 2" ] } })

Bentuk lainnya hanya mencocokkan dua elemen itu, tetapi dalam urutan apa pun. Jadi ada dua pendekatan:

db.collection.find({ "$or": [
    { "members": [ "some id 1", "some id 2" ] },
    { "members": [ "some id 2", "some id 1" ] }
]})

Ini menggunakan logika $or untuk mengatakan bahwa array harus tepat tetapi dapat diatur dengan cara apa pun. Dan pendekatan lainnya:

db.collection.find({ "$and": [ 
    { "members": "some id 1" },
    { "members": "some id 2" }
    { "members": { "$size": 2 } }
]})

Jadi ini akan menggunakan $size untuk memastikan bahwa ketika array berisi kedua elemen yang cocok itu juga hanya memiliki dua elemen. Yang merupakan sintaks yang lebih bagus daripada menggunakan $or , terutama untuk array yang lebih besar.

Dan di rilis mendatang seperti yang disebutkan, ini menjadi lebih bersih:

db.collection.find({ "$and": [ 
    { "members": { "$all": [ "some id 1", "some id 2" ] } },
    { "members": { "$size": 2 } }
]})

Itu cukup banyak mencakup setiap interpretasi




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kesalahan:Tidak dapat terhubung ke server mana pun di klaster MongoDB Atlas Anda

  2. Bagaimana cara menghapus duplikat dengan kondisi tertentu di mongodb?

  3. Komit dan persistensi disk dalam NoSQL (MongoDB)

  4. Flask-PyMongo colMod

  5. findAll gagal setelah play morphia diinisialisasi ulang