MongoDB ดีกว่าเมื่อคุณกำลังค้นหาองค์ประกอบอาร์เรย์ ให้เราใช้ไวยากรณ์ต่อไปนี้สำหรับการค้นหาองค์ประกอบอาร์เรย์ -
db.yourCollectionName.find({yourArrayFieldName:"yourValue"}).pretty(); ไวยากรณ์ข้างต้นจะส่งคืนเอกสารทั้งหมดที่มีค่า “yourValue” ในฟิลด์อาร์เรย์
เพื่อให้เข้าใจแนวคิด ให้เราสร้างคอลเลกชันพร้อมกับเอกสาร แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้ -
> db.queryArrayElementsDemo.insertOne({
... "StudentName":"John","StudentFavouriteSubject":["C","Java"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c90c0354afe5c1d2279d694")
}
> db.queryArrayElementsDemo.insertOne({ "StudentName":"Carol","StudentFavouriteSubject":["C","C++"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c90c0434afe5c1d2279d695")
}
> db.queryArrayElementsDemo.insertOne({ "StudentName":"David","StudentFavouriteSubject":["MongoDB","Java"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c90c0584afe5c1d2279d696")
} แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังต่อไปนี้ −
> db.queryArrayElementsDemo.find().pretty();
ต่อไปนี้เป็นผลลัพธ์ -
{
"_id" : ObjectId("5c90c0354afe5c1d2279d694"),
"StudentName" : "John",
"StudentFavouriteSubject" : [
"C",
"Java"
]
}
{
"_id" : ObjectId("5c90c0434afe5c1d2279d695"),
"StudentName" : "Carol",
"StudentFavouriteSubject" : [
"C",
"C++"
]
}
{
"_id" : ObjectId("5c90c0584afe5c1d2279d696"),
"StudentName" : "David",
"StudentFavouriteSubject" : [
"MongoDB",
"Java"
]
} การค้นหาองค์ประกอบอาร์เรย์ด้วย MongoDB -
> db.queryArrayElementsDemo.find({StudentFavouriteSubject:"Java"}).pretty(); ต่อไปนี้เป็นผลลัพธ์ -
{
"_id" : ObjectId("5c90c0354afe5c1d2279d694"),
"StudentName" : "John",
"StudentFavouriteSubject" : [
"C",
"Java"
]
}
{
"_id" : ObjectId("5c90c0584afe5c1d2279d696"),
"StudentName" : "David",
"StudentFavouriteSubject" : [
"MongoDB",
"Java"
]
} ดูผลลัพธ์ตัวอย่างด้านบน แบบสอบถามด้านบนส่งคืนเอกสารทั้งหมดที่มีค่า “Java”