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

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


คุณสามารถใช้ตัวดำเนินการ $where ร่วมกับสคริปต์บางตัวได้

ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน -

> dbsameValueMultipleTimesDemoinsertOne(
   {
      "ListOfPrice":[
         {"Price": 110},
         {"Price":130},
         {"Price": 145}
      ]
   }
);
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cefc4e6ef71edecf6a1f6b9")
}
> dbsameValueMultipleTimesDemoinsertOne(
   {
      "ListOfPrice":[
         {"Price": 110},
         {"Price":178},
         {"Price": 110}
      ]
   }
);
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cefc4e7ef71edecf6a1f6ba")
}

ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงเอกสารทั้งหมดจากคอลเลกชันโดยใช้วิธี find() -

> dbsameValueMultipleTimesDemofind()pretty();

ผลลัพธ์

{
   "_id" : ObjectId("5cefc4e6ef71edecf6a1f6b9"),
   "ListOfPrice" : [
      {
         "Price" : 110
      },
      {
         "Price" : 130
      },
      {
         "Price" : 145
      }
   ]
}
{
   "_id" : ObjectId("5cefc4e7ef71edecf6a1f6ba"),
   "ListOfPrice" : [
      {
         "Price" : 110
      },
      {
         "Price" : 178
      },
      {
         "Price" : 110
      }
   ]
}

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

> dbsameValueMultipleTimesDemofind({
   "$where": function() {
      return thisListOfPricefilter(function(p) {
         return pPrice == 110;
      })length > 1;
   }
})

ผลลัพธ์

{ "_id" : ObjectId("5cefc4e7ef71edecf6a1f6ba"), "ListOfPrice" : [ { "Price" : 110 }, { "Price" : 178 }, { "Price" : 110 } ] }