$in
. का उपयोग न करके आप इससे निजात पा सकते हैं .
यह इस तरह दिखता है $map
items
. में प्रत्येक दस्तावेज़ के लिए अलग से निष्पादित किया जाता है संग्रह। यदि आप मानचित्र को $addFields
. में चलाना चाहते हैं चरण, आप जोड़े गए फ़ील्ड को _id
. से मिलान करने के लिए लुकअप के सरल रूप का उपयोग कर सकते हैं , जो स्वचालित रूप से लापता को संभाल लेगा, null
, और सरणी।
जोड़े गए फ़ील्ड को $project
. के साथ निकालें यदि आवश्यक हो तो मंच।
db.case.aggregate([
{$lookup: {
from: "insurance",
let: { ipids: "$sale.bill.insurancePlanId" },
pipeline: [
{$unwind: "$coveragePlans"},
{$match: { $expr: { $in: ["$coveragePlans._id", "$$ipids"] } }},
{$project: { _id: 0, name: 1 }}
],
as: "insurances"
}}
{$addFields:{
matchArray:{$map: {
input: "$$iid",
in: { $toObjectId: "$$this" }
}}
}},
{$lookup: {
from: "item",
localField: "matchArray",
foreignField:"_id",
as: "items"
}},
{$project:{
arrayField: 0
}}
])