MongoDB ใช้ Dot Notation (เครื่องหมายจุด) เพื่อเข้าถึงและค้นหาข้อมูลภายในออบเจ็กต์ซ้อน (Nested Object/Hash) ได้อย่างง่ายดาย
ตัวอย่างข้อมูลทดสอบ
> db.hashDemo.insertOne({"ClientName": "Larry", "ClientAge": 23, "ClientDetails": {"isEducated": true, "ClientProject": "University Management"}});
{ "acknowledged": true, "insertedId": ObjectId("5ca1ef1266324ffac2a7dc5e") }
> db.hashDemo.insertOne({"ClientName": "Chris", "ClientAge": 26, "ClientDetails": {"isEducated": false, "ClientProject": "Online Book Store"}});
{ "acknowledged": true, "insertedId": ObjectId("5ca1ef7766324ffac2a7dc5f") }
แสดงข้อมูลทั้งหมด
> db.hashDemo.find().pretty();
ผลลัพธ์
{
"_id": ObjectId("5ca1ef1266324ffac2a7dc5e"),
"ClientName": "Larry",
"ClientAge": 23,
"ClientDetails": {
"isEducated": true,
"ClientProject": "University Management"
}
}
{
"_id": ObjectId("5ca1ef7766324ffac2a7dc5f"),
"ClientName": "Chris",
"ClientAge": 26,
"ClientDetails": {
"isEducated": false,
"ClientProject": "Online Book Store"
}
}
ค้นหาเงื่อนไขหลายเงื่อนไขในออบเจ็กต์ซ้อน
> db.hashDemo.find({"ClientDetails.isEducated": false, "ClientDetails.ClientProject": "Online Book Store"}).pretty();
ผลลัพธ์
{
"_id": ObjectId("5ca1ef7766324ffac2a7dc5f"),
"ClientName": "Chris",
"ClientAge": 26,
"ClientDetails": {
"isEducated": false,
"ClientProject": "Online Book Store"
}
}
สรุป: ใช้ FieldName.SubFieldName รูปแบบ Dot Notation ในเงื่อนไข find() เพื่อค้นหาข้อมูลในออบเจ็กต์ซ้อนหลายระดับได้