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”