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

MongoDB: นับจำนวนเอกสารที่มีฟิลด์ในอาร์เรย์แบบฝังด้วย $exists


สร้างคอลเลกชันตัวอย่าง (โครงสร้างซ้อนหลายระดับ)

> db.demo296.insertOne({
  "id":101,
  "Name":"Chris",
  "details":[
    { "SubjectId":[101,103], "SubjectName":["MySQL","MongoDB"] },
    { "SubjectId":[102,104], "SubjectName":["Java","C"] }
  ]
});
{ "acknowledged": true, "insertedId": ObjectId("5e4d51715d93261e4bc9ea3b") }
> db.demo296.insertOne({
  "id":102,
  "Name":"David",
  "details":[
    { "SubjectId":[110,113] },
    { "SubjectId":[112,114] }
  ]
});
{ "acknowledged": true, "insertedId": ObjectId("5e4d519b5d93261e4bc9ea3c") }
> db.demo296.insertOne({
  "id":103,
  "Name":"Bob",
  "details":[
    { "SubjectName":["C++","Python"] },
    { "SubjectName":["Spring","Hibernate"] }
  ]
});
{ "acknowledged": true, "insertedId": ObjectId("5e4d52315d93261e4bc9ea3d") }

แสดงข้อมูล

> db.demo296.find();
{ "_id": ObjectId("5e4d51715d93261e4bc9ea3b"), "id": 101, "Name": "Chris", "details": [ { "SubjectId": [ 101, 103 ], "SubjectName": [ "MySQL", "MongoDB" ] }, { "SubjectId": [ 102, 104 ], "SubjectName": [ "Java", "C" ] } ] }
{ "_id": ObjectId("5e4d519b5d93261e4bc9ea3c"), "id": 102, "Name": "David", "details": [ { "SubjectId": [ 110, 113 ] }, { "SubjectId": [ 112, 114 ] } ] }
{ "_id": ObjectId("5e4d52315d93261e4bc9ea3d"), "id": 103, "Name": "Bob", "details": [ { "SubjectName": [ "C++", "Python" ] }, { "SubjectName": [ "Spring", "Hibernate" ] } ] }

คิวรี: count() + $exists บน details.SubjectName

> db.demo296.count( { 'details.SubjectName': {$exists: true } } );

ผลลัพธ์: 2 (เฉพาะ Chris และ Bob ที่มี SubjectName)

2