Contoh di bagian ini menunjukkan filter yang dibuat di layanan Adapter atau notifikasi untuk mengkueri data dari larik dokumen yang disematkan
Gambar berikut adalah contoh data di MongoDB
Menentukan kondisi kueri pada bidang bersarang dalam larik dokumen yang disematkan
Contoh berikut memperlihatkan kondisi kueri yang mengembalikan semua dokumen di mana larik memiliki setidaknya satu dokumen tersemat yang berisi bidang yang cocok dengan kondisi kueri
Gambar berikut menunjukkan kondisi kueri yang mengembalikan semua dokumen di mana larik item memiliki satu dokumen tersemat yang berisi bidang itemId yang nilainya sama dengan 002 dan qty sama dengan 10 dan dokumen tersemat kedua dalam larik yang sama yang berisi bidang
Topik yang kami minati hari ini adalah tentang menanyakan dokumen yang disematkan di MongoDB. Dokumen dapat menyerap berbagai tingkat kerumitan. Biasanya, struktur database yang kompleks melibatkan banyak koleksi yang saling mengisi bersama dengan dokumen yang disematkan
Struktur yang kompleks ini terkadang mengakibatkan kesulitan dalam mengelola data. Individu, terutama yang baru mengenal pemrograman dan MongoDB bahkan mungkin mengalami kesulitan di awal. Untungnya, ada jalan keluar
Panduan ini akan membantu Anda dalam menanyakan dokumen yang disematkan di MongoDB terlepas dari seberapa besar data yang ada di database Anda. Saya akan menjelaskan dengan beberapa contoh untuk membantu Anda mempelajari kueri dokumen tersemat di MongoDB
Dalam contoh berikut kami mengambil semua dokumen yang memiliki dokumen tersemat persis { "warehouse": "W1", "qty": 100 }
dalam larik inventory
Catatan. Urutan lapangan penting i. e. kolom pertama dari dokumen yang disematkan harus "gudang" dan harus memiliki nilai "W1" dan kolom kedua dari dokumen yang disematkan harus "qty" dan harus memiliki nilai 100
> db.books.find[{ "inventory": { "warehouse": "W1", "qty": 100 } }].pretty[];
{
"_id" : ObjectId["5d2d9afd81a3cd0a9239c121"],
"title" : "Node.js in Action",
"author" : [
"Marc Harter",
"Nathan Rajlich",
"T. J. Holowaychuk",
"Mike Cantelon"
],
"inventory" : [
{
"warehouse" : "W1",
"qty" : 100
},
{
"warehouse" : "W3",
"qty" : 250
}
]
}
Jika kami mengubah urutan bidang dokumen yang disematkan dalam kueri, maka kami tidak akan mendapatkan hasilnya
Dalam kueri berikut, kami mengubah urutan bidang dokumen yang disematkan menjadi
> db.books.find[{ "inventory": { "warehouse": "W1", "qty": 100 } }].pretty[];
{
"_id" : ObjectId["5d2d9afd81a3cd0a9239c121"],
"title" : "Node.js in Action",
"author" : [
"Marc Harter",
"Nathan Rajlich",
"T. J. Holowaychuk",
"Mike Cantelon"
],
"inventory" : [
{
"warehouse" : "W1",
"qty" : 100
},
{
"warehouse" : "W3",
"qty" : 250
}
]
}
0 dan tidak memberi kami hasil> db.books.find[{ "inventory": { "qty": 100, "warehouse": "W1" } }].pretty[];
Pilih berdasarkan bidang dokumen yang disematkan dalam larik
Dalam contoh berikut, kami mengambil semua dokumen yang memiliki nilai "W1" untuk kolom "gudang" di salah satu dokumen tersemat di larik "inventaris"
> db.books.find[{ "inventory.warehouse": "W1" }].pretty[];
{
"_id" : ObjectId["5d2d9afd81a3cd0a9239c11f"],
"title" : "The C Programming Language",
"author" : [
"Brian Kernighan",
"Dennis Ritchie"
],
"inventory" : [
{
"warehouse" : "W1",
"qty" : 3000
},
{
"warehouse" : "W2",
"qty" : 750
}
]
}
{
"_id" : ObjectId["5d2d9afd81a3cd0a9239c121"],
"title" : "Node.js in Action",
"author" : [
"Marc Harter",
"Nathan Rajlich",
"T. J. Holowaychuk",
"Mike Cantelon"
],
"inventory" : [
{
"warehouse" : "W1",
"qty" : 100
},
{
"warehouse" : "W3",
"qty" : 250
}
]
}
Dalam contoh berikut, kami mengambil semua dokumen yang memiliki nilai lebih besar dari 300 untuk bidang "qty" untuk salah satu dokumen tersemat dalam larik "inventaris"
> db.books.find[{ "inventory.qty": { $gt: 300 } }].pretty[];
{
"_id" : ObjectId["5d2d9afd81a3cd0a9239c11f"],
"title" : "The C Programming Language",
"author" : [
"Brian Kernighan",
"Dennis Ritchie"
],
"inventory" : [
{
"warehouse" : "W1",
"qty" : 3000
},
{
"warehouse" : "W2",
"qty" : 750
}
]
}
{
"_id" : ObjectId["5d2d9afd81a3cd0a9239c120"],
"title" : "MongoDB in Action",
"author" : [
"Kyle Banker"
],
"inventory" : [
{
"warehouse" : "W2",
"qty" : 100
},
{
"warehouse" : "W3",
"qty" : 1500
}
]
}
_Pilih berdasarkan beberapa kondisi kueri pada bidang dokumen yang disematkan
Dalam contoh berikut, kami mengambil semua dokumen yang memiliki bidang "qty" disetel lebih besar dari 100 dan bidang "gudang" disetel ke "W1"
> db.books.find[{ "inventory": { $elemMatch: { "qty": { $gt: 100 }, "warehouse": "W1" } } }].pretty[];
{
"_id" : ObjectId["5d2d9afd81a3cd0a9239c11f"],
"title" : "The C Programming Language",
"author" : [
"Brian Kernighan",
"Dennis Ritchie"
],
"inventory" : [
{
"warehouse" : "W1",
"qty" : 3000
},
{
"warehouse" : "W2",
"qty" : 750
}
]
}
Dalam contoh berikut, kami mengambil semua dokumen yang memiliki bidang "qty" yang disetel ke nilai lebih besar dari 100 untuk salah satu dokumen yang disematkan
> db.books.find[{ "inventory": { $elemMatch: { "qty": { $gt: 100 } } } }].pretty[];
{
"_id" : ObjectId["5d2d9afd81a3cd0a9239c11f"],
"title" : "The C Programming Language",
"author" : [
"Brian Kernighan",
"Dennis Ritchie"
],
"inventory" : [
{
"warehouse" : "W1",
"qty" : 3000
},
{
"warehouse" : "W2",
"qty" : 750
}
]
}
{
"_id" : ObjectId["5d2d9afd81a3cd0a9239c120"],
"title" : "MongoDB in Action",
"author" : [
"Kyle Banker"
],
"inventory" : [
{
"warehouse" : "W2",
"qty" : 100
},
{
"warehouse" : "W3",
"qty" : 1500
}
]
}
{
"_id" : ObjectId["5d2d9afd81a3cd0a9239c121"],
"title" : "Node.js in Action",
"author" : [
"Marc Harter",
"Nathan Rajlich",
"T. J. Holowaychuk",
"Mike Cantelon"
],
"inventory" : [
{
"warehouse" : "W1",
"qty" : 100
},
{
"warehouse" : "W3",
"qty" : 250
}
]
}
_Jika contoh berikut ini kita memilih semua dokumen yang memiliki bidang "qty" yang disetel ke nilai lebih besar dari atau sama dengan 200 atau bidang "gudang" disetel ke nilai "W1"