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