คุณสามารถใช้เครื่องหมายจุด (.) เพื่อสอบถามตามฟิลด์ย่อย ให้เราสร้างคอลเลกชันด้วยเอกสาร แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้ -
> db.queryBySubFieldDemo.insertOne( ... { ... "StudentPersonalDetails" :{"StudentName" :"John","StudentHobby" :"Photography"}, ... "StudentScores" :{"MathScore" :56} ... }... );{ "รับทราบ" :จริง "insertedId" :ObjectId("5c92c2995259fcd195499808")}> db.queryBySubFieldDemo.insertOne( ... { ... "StudentPersonalDetails" :{" StudentName" :"Chris","StudentHobby" :"Reading"}, ... "StudentScores" :{"MathScore" :97} ... }... );{ "acknowledged" :true, "insertedId" :ObjectId("5c92c2df5259fcd195499809")}
แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังนี้ −
> db.queryBySubFieldDemo.find().pretty();
ต่อไปนี้เป็นผลลัพธ์ -
{ "_id" :ObjectId("5c92c2995259fcd195499808"), "StudentPersonalDetails" :{ "StudentName" :"John", "StudentHobby" :"Photography" }, "StudentScores" :{ "MathScore" :56 }}{ "_id" :ObjectId("5c92c2df5259fcd195499809"), "StudentPersonalDetails" :{ "StudentName" :"Chris", "StudentHobby" :"Reading" }, "StudentScores" :{ "MathScore" :97 }}นี่คือแบบสอบถามตามฟิลด์ย่อย -
> db.queryBySubFieldDemo.find({"StudentPersonalDetails.StudentName":"Chris"}).pretty();
ต่อไปนี้เป็นผลลัพธ์ -
{ "_id" :ObjectId("5c92c2df5259fcd195499809"), "StudentPersonalDetails" :{ "StudentName" :"Chris", "StudentHobby" :"Reading" }, "StudentScores" :{ "MathScore"}}