ใช้ find() ร่วมกับ dot notation (สัญลักษณ์จุด) เพื่อค้นหาค่าในโครงสร้างข้อมูลแบบ JSON ที่ซ้อนกัน เริ่มต้นด้วยการสร้างคอลเลกชันตัวอย่าง:
> db.findValueFromJsonDemo.insertOne(
{
"UserDetails": [{
"_id": new ObjectId(),
"UserName": "Carol",
"UserMessage": "Hi"
}],
"UserFriendsName": ["John","Sam"]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cdf8a4cbf3115999ed511fd") }
แสดงเอกสาร:
> db.findValueFromJsonDemo.find().pretty();
{ "_id" : ObjectId("5cdf8a4cbf3115999ed511fd"), "UserDetails" : [ { "_id" : ObjectId("5cdf8a4cbf3115999ed511fc"), "UserName" : "Carol", "UserMessage" : "Hi" } ], "UserFriendsName" : [ "John", "Sam" ] }
คิวรี่ค้นหาเอกสารที่ UserMessage เป็น "Hi" (ใช้ dot notation เข้าถึงอาร์เรย์):
> db.findValueFromJsonDemo.find({'UserDetails.UserMessage': "Hi"});
{ "_id" : ObjectId("5cdf8a4cbf3115999ed511fd"), "UserDetails" : [ { "_id" : ObjectId("5cdf8a4cbf3115999ed511fc"), "UserName" : "Carol", "UserMessage" : "Hi" } ], "UserFriendsName" : [ "John", "Sam" ] }
เทคนิค: ใช้ UserDetails.UserMessage เพื่อเข้าถึงฟิลด์ภายในออบเจกต์ที่อยู่ในอาร์เรย์ MongoDB จะค้นหาในทุกออบเจกต์ของอาร์เรย์อัตโนมัติ