Bạn có thể sử dụng kết hợp findOne()
và find()
các phương thức con trỏ cùng với JavaScript gốc map
để đầu tiên lấy id của nhóm cho một người dùng cụ thể (sẽ là một mảng chuỗi), sau đó sử dụng hàm bản đồ để ánh xạ mảng chuỗi id của nhóm với mảng của ObjectId và cuối cùng truy vấn bộ sưu tập nhóm với mảng kết quả là $in
biểu thức toán tử:
var teams = db.users.findOne({"name": "User1"}).teams;
var obj_ids = teams.map(function (item){ return ObjectId(item)});
db.teams.find({ "_id": { "$in": obj_ids } });
Đầu ra :
/* 0 */
{
"_id" : ObjectId("5527a9493ebbe2452666c238"),
"name" : "Team 1"
}
/* 1 */
{
"_id" : ObjectId("5527b1be3371e3a827fa602c"),
"name" : "Team 2"
}