Karena ada banyak kebingungan tentang permintaan koleksi MongoDB dengan sub-dokumen , saya pikir layak untuk menjelaskan jawaban di atas dengan contoh:
Pertama, saya telah memasukkan hanya dua objek dalam koleksi yaitu: message
sebagai:
> db.messages.find().pretty()
{
"_id" : ObjectId("5cce8e417d2e7b3fe9c93c32"),
"headers" : {
"From" : "reservations@marriott.com"
}
}
{
"_id" : ObjectId("5cce8eb97d2e7b3fe9c93c33"),
"headers" : {
"From" : "reservations@marriott.com",
"To" : "kprasad.iitd@gmail.com"
}
}
>
Jadi apa hasil dari kueri: db.messages.find({headers: {From: "reservations@marriott.com"} }).count()
Seharusnya satu karena pertanyaan ini untuk dokumen di mana headers
sama dengan objek {From: "reservations@marriott.com"}
, hanya yaitu tidak mengandung bidang lain atau kita harus menentukan seluruh sub-dokumen sebagai nilai bidang.
Demikian sesuai jawaban dari @ Edmondo1984
Kesamaan kecocokan dalam sub-dokumen memilih dokumen jika sub dokumen cocok persis dengan sub-dokumen yang ditentukan, termasuk urutan bidang .
Dari pernyataan di atas, seperti apa hasil query di bawah ini?
> db.messages.find({headers: {To: "kprasad.iitd@gmail.com", From: "reservations@marriott.com"} }).count()
0
Dan bagaimana jika kita akan mengubah urutan From
dan To
yaitu sama dengan sub-dokumen dari dokumen kedua?
> db.messages.find({headers: {From: "reservations@marriott.com", To: "kprasad.iitd@gmail.com"} }).count()
1
jadi, itu cocok persis dengan sub-dokumen yang ditentukan, termasuk urutan bidang .
Untuk menggunakan operator titik, saya pikir itu sangat jelas untuk setiap orang. Mari kita lihat hasil dari kueri di bawah ini:
> db.messages.find( { 'headers.From': "reservations@marriott.com" } ).count()
2
Saya harap penjelasan ini dengan contoh di atas akan membuat seseorang lebih jernih menemukan permintaan dengan sub-dokumen .