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

MongoDB Projection ผลลัพธ์เป็น Array ของ _id ที่ Match ด้วย distinct()

Method distinct() ใน MongoDB สามารถใช้เพื่อดึง Array ของค่า _id ที่ Match เงื่อนไขได้ เนื้อหานี้สาธิตการหา _id ของเอกสารที่ Array ListOfNames มีค่า "Mike"

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

> db.demo151.insertOne({"ListOfNames":["Chris","David","Mike"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3513b6fdf09dd6d08539da") }

> db.demo151.insertOne({"ListOfNames":["Mike","Bob"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3513c4fdf09dd6d08539db") }

> db.demo151.insertOne({"ListOfNames":["John","David","Chris"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3513dcfdf09dd6d08539dc") }

แสดงข้อมูลทั้งหมด

> db.demo151.find();
{
  "_id" : ObjectId("5e3513b6fdf09dd6d08539da"),
  "ListOfNames" : [ "Chris", "David", "Mike" ]
}
{
  "_id" : ObjectId("5e3513c4fdf09dd6d08539db"),
  "ListOfNames" : [ "Mike", "Bob" ]
}
{
  "_id" : ObjectId("5e3513dcfdf09dd6d08539dc"),
  "ListOfNames" : [ "John", "David", "Chris" ]
}

Query distinct _id ที่มี "Mike" ใน ListOfNames

> db.demo151.distinct('_id', {'ListOfNames' : "Mike"});

ผลลัพธ์

[
  ObjectId("5e3513b6fdf09dd6d08539da"),
  ObjectId("5e3513c4fdf09dd6d08539db")
]

คำอธิบาย

  • Syntax: db.collection.distinct(field, query)
  • field: ฟิลด์ที่ต้องการค่า Distinct (ที่นี่คือ _id)
  • query: Filter Condition - {'ListOfNames': "Mike"} หา Doc ที่ Array มี "Mike"
  • ผลลัพธ์เป็น Array ของ ObjectId ที่ Match
  • ใช้ได้กับ Field ใดๆ ไม่ใช่แค่ _id - เช่น distinct("ListOfNames", {...}) จะได้ Array ของชื่อที่ไม่ซ้ำ
  • ข้อจำกัด: ผลลัพธ์ต้อง ≤ 16MB