Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

การใช้ find() ค้นหาคีย์ซ้อนใน MongoDB

ใน MongoDB สามารถใช้เมธอด find() ค้นหาข้อมูลภายในฟิลด์ซ้อน (nested fields) ได้โดยใช้การเขียนแบบ Dot Notation (เครื่องหมายจุด)

รูปแบบคำสั่ง

db.yourCollectionName.find({"yourOuterFieldName.yourInnerFieldName": "yourValue"}).pretty();

ตัวอย่างการสร้างข้อมูลทดสอบ

> db.searchForNestedKeysDemo.insertOne({"ClientName": "Larry", "ClientAge": 28, "ClientExtra Details": {"isEducated": true, "CountryName": "US"}});
{ "acknowledged": true, "insertedId": ObjectId("5ca20e8b66324ffac2a7dc64") }
> db.searchForNestedKeysDemo.insertOne({"ClientName": "Chris", "ClientAge": 29, "ClientExtra Details": {"isEducated": false, "CountryName": "UK"}});
{ "acknowledged": true, "insertedId": ObjectId("5ca20ea366324ffac2a7dc65") }
> db.searchForNestedKeysDemo.insertOne({"ClientName": "David", "ClientAge": 39, "ClientExtra Details": {"isEducated": true, "CountryName": "AUS"}});
{ "acknowledged": true, "insertedId": ObjectId("5ca20eba66324ffac2a7dc66") }

แสดงข้อมูลทั้งหมดในคอลเลกชัน

> db.searchForNestedKeysDemo.find().pretty();

ผลลัพธ์

{
  "_id": ObjectId("5ca20e8b66324ffac2a7dc64"),
  "ClientName": "Larry",
  "ClientAge": 28,
  "ClientExtraDetails": {
    "isEducated": true,
    "CountryName": "US"
  }
}
{
  "_id": ObjectId("5ca20ea366324ffac2a7dc65"),
  "ClientName": "Chris",
  "ClientAge": 29,
  "ClientExtraDetails": {
    "isEducated": false,
    "CountryName": "UK"
  }
}
{
  "_id": ObjectId("5ca20eba66324ffac2a7dc66"),
  "ClientName": "David",
  "ClientAge": 39,
  "ClientExtraDetails": {
    "isEducated": true,
    "CountryName": "AUS"
  }
}

ค้นหาข้อมูลด้วยคีย์ซ้อน

> db.searchForNestedKeysDemo.find({"ClientExtraDetails.CountryName": "UK"}).pretty();

ผลลัพธ์

{
  "_id": ObjectId("5ca20ea366324ffac2a7dc65"),
  "ClientName": "Chris",
  "ClientAge": 29,
  "ClientExtraDetails": {
    "isEducated": false,
    "CountryName": "UK"
  }
}

สรุป: ใช้ Dot Notation (ClientExtraDetails.CountryName) เพื่อเข้าถึงฟิลด์ภายในออบเจ็กต์ซ้อนได้โดยตรงในเงื่อนไขการค้นหา