इस क्वेरी को आजमाएं:
db.companies.aggregate([
{ $match: { _id: companyId } },
{ $unwind: "$professionals_customers" },
{
$lookup: {
from: "companies",
localField: "professionals_customers.company",
foreignField: "_id",
as: "professionals_customers.company"
}
},
{
$lookup: {
from: "users",
localField: "professionals_customers.contact",
foreignField: "_id",
as: "professionals_customers.contact"
}
},
{
$addFields: {
"professionals_customers.company": {
$arrayElemAt: ["$professionals_customers.company", 0]
},
"professionals_customers.contact": {
$arrayElemAt: ["$professionals_customers.contact", 0]
}
}
},
{
$group: { _id: "$_id", professionals_customers: { $push: "$professionals_customers" }, data: { $first: "$$ROOT" } }
},
{ $addFields: { "data.professionals_customers": "$professionals_customers" } },
{ $replaceRoot: { newRoot: "$data" } }
])
परीक्षा : MongoDB-Playground
नोट : यदि आवश्यक हो तो आपको स्ट्रिंग . प्रकार के फ़ील्ड/इनपुट को कनवर्ट करने की आवश्यकता है करने के लिए ObjectId() . बुनियादी बात यह है कि आपको तुलना किए जा रहे दो क्षेत्रों के प्रकार या इनपुट-टू-फील्ड-इन-डीबी मिलान या नहीं की जांच करने की आवश्यकता है।