Bạn có thể sử dụng $ tra cứu bằng đường dẫn bắt đầu từ MongoDB v3.6 ,
- để chuyển localField
_id
dưới dạngmodel_id
, bạn có thể sử dụng trường bên trong đường dẫn tra cứu bằng cách sử dụng $$ tham chiếu, - đường dẫn để đặt
$match
giai đoạn và phù hợp với các điều kiện bắt buộc của bạn vàuser_id
tình trạng
{
$lookup: {
from: "bookmarks",
let: { model_id: "$_id" },
pipeline: [
{
$match: {
$expr: { $eq: ["$$model_id", "$model_id"] },
user_id: objectId(req.user._id)
}
}
],
as: "bookmarks"
}
}
Tùy chọn khác cho MongoDB v3.4 ,
- $ filter
để lặp lại vòng lặp của
bookmarks
và nhận các dấu trang đã lọc trên cơ sở điều kiện
{
$lookup: {
from: "bookmarks",
localField: "_id",
foreignField: "model_id",
as: "bookmarks"
}
},
{
$addFields: {
bookmarks: {
$filter: {
input: "$bookmarks",
cond: { $eq: ["$$this.user_id", objectId(req.user._id)] }
}
}
}
}