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

แบบสอบถาม MongoDB ชนิดใดที่พบค่าเดียวกันหลายครั้งในอาร์เรย์


หากต้องการค้นหาค่าเดียวกันหลายครั้ง ให้ใช้ $where ใน MongoDB ให้เราสร้างคอลเลกชันที่มีเอกสาร -

> db.demo188.insertOne(
...   {
...      "ListOfData":[
...         {"Data": 100},
...         {"Data": 200},
...         {"Data": 100}
...      ]
...   }
...);
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3ad1c203d395bdc21346bd")
}
> db.demo188.insertOne(
...   {
...      "ListOfData":[
...         {"Data": 100},
...         {"Data": 200},
...         {"Data": 300}
...   }
...);
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3ad1c203d395bdc21346be")
}

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -

> db.demo188.find();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "_id" : ObjectId("5e3ad1c203d395bdc21346bd"), "ListOfData" : [ { "Data" : 100 }, { "Data" : 200 }, { "Data" : 100 } ] }
{ "_id" : ObjectId("5e3ad1c203d395bdc21346be"), "ListOfData" : [ { "Data" : 100 }, { "Data" : 200 }, { "Data" : 300 } ] }

ต่อไปนี้เป็นแบบสอบถามเพื่อค้นหาค่าเดียวกันหลายครั้งในอาร์เรย์ -

> db.demo188.find({
...   "$where": function() {
...      return this.ListOfData.filter(function(d) {
...         return d.Data == 100;
...      }).length > 1;
...   }
...})

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "_id" : ObjectId("5e3ad1c203d395bdc21346bd"), "ListOfData" : [ { "Data" : 100 }, { "Data" : 200 }, { "Data" : 100 } ] }