आप $ पाइपलाइन के साथ लुकअप MongoDB v3.6 से शुरू होकर ,
- स्थानीय फ़ील्ड पास करने दें
_id
model_id
. के रूप में चर, आप $$ संदर्भ का उपयोग करके लुकअप पाइपलाइन के अंदर फ़ील्ड का उपयोग कर सकते हैं, - पाइपलाइन डालने के लिए
$match
चरण और अपनी आवश्यक शर्तों से मेल खाते हैं औरuser_id
हालत
{
$lookup: {
from: "bookmarks",
let: { model_id: "$_id" },
pipeline: [
{
$match: {
$expr: { $eq: ["$$model_id", "$model_id"] },
user_id: objectId(req.user._id)
}
}
],
as: "bookmarks"
}
}
MongoDB v3.4 . के लिए अन्य विकल्प ,
- $filter
bookmarks
. के लूप को पुनरावृत्त करने के लिए और शर्त के आधार पर फ़िल्टर किए गए बुकमार्क प्राप्त करें
{
$lookup: {
from: "bookmarks",
localField: "_id",
foreignField: "model_id",
as: "bookmarks"
}
},
{
$addFields: {
bookmarks: {
$filter: {
input: "$bookmarks",
cond: { $eq: ["$$this.user_id", objectId(req.user._id)] }
}
}
}
}