Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Projection trả về mảng _id của tài liệu khớp điều kiện trong MongoDB

Phương thức distinct() có thể dùng để lấy mảng các giá trị duy nhất của một trường (thường là _id) từ các tài liệu thoả mãn bộ lọc. Cách này hiệu quả hơn find() + map khi chỉ cần danh sách ID.

Dữ liệu mẫu

> 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") }

Xem dữ liệu

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

Lấy _id của các tài liệu chứa "Mike" trong ListOfNames

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

Kết quả

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

Lưu ý: Cú pháp distinct(field, query) – tham số thứ 2 là bộ lọc. Kết quả là mảng các giá trị distinct của field (ở đây _id) từ các tài liệu khớp query. Rất tiện cho việc lấy danh sách ID để dùng trong $in sau này.