documentation के अनुसार, $ देखने केवल शामिल हो सकते हैं एक बाहरी संग्रह।
आप एक संग्रह में userInfo
और userRole
को गठबंधन करना चाहते हैं, जैसा कि प्रदान किया गया उदाहरण डीबी स्कीमा के संबंध में आधारित है। मोंगो नोएसक्यूएल डेटाबेस है - और इसके लिए दस्तावेज़ प्रबंधन के लिए अलग-अलग दृष्टिकोण की आवश्यकता है।
कृपया 2-चरणीय क्वेरी नीचे पाएं, जो userInfo के साथ userInfo को जोड़ती है - संयुक्त डेटा प्रदर्शित करने के लिए अंतिम क्वेरी में उपयोग किए गए नए अस्थायी संग्रह को बनाते हैं। पिछली क्वेरी में $ आउट का उपयोग करने और बाद में उपयोग के लिए मर्ज किए गए डेटा के साथ नया संग्रह बनाने का विकल्प है।
संग्रह
db.sivaUser.insert(
{
"_id" : ObjectId("5684f3c454b1fd6926c324fd"),
"email" : "[email protected]",
"userId" : "AD",
"userName" : "admin"
})
//"userinfo"
db.sivaUserInfo.insert(
{
"_id" : ObjectId("56d82612b63f1c31cf906003"),
"userId" : "AD",
"phone" : "0000000000"
})
//"userrole"
db.sivaUserRole.insert(
{
"_id" : ObjectId("56d82612b63f1c31cf906003"),
"userId" : "AD",
"role" : "admin"
})
बनाने "में शामिल होने" उन सब :-)
db.sivaUserInfo.aggregate([
{$lookup:
{
from: "sivaUserRole",
localField: "userId",
foreignField: "userId",
as: "userRole"
}
},
{
$unwind:"$userRole"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :"$userRole.role"
}
},
{
$out:"sivaUserTmp"
}
])
db.sivaUserTmp.aggregate([
{$lookup:
{
from: "sivaUser",
localField: "userId",
foreignField: "userId",
as: "user"
}
},
{
$unwind:"$user"
},
{
$project:{
"_id":1,
"userId" : 1,
"phone" : 1,
"role" :1,
"email" : "$user.email",
"userName" : "$user.userName"
}
}
])
संभावित डुप्लिकेट (https://stackoverflow.com/questions/37086387/multiple-join-conditions-using-the-lookup-operator) – styvane
संभव डुप्लिकेट [मैं MongoDB में संदर्भित वस्तुओं को कैसे पूछूं?] (https: // stackoverflow।कॉम/प्रश्न/9 621 9 28/कैसे करें-मैं-क्वेरी-संदर्भित-ऑब्जेक्ट-इन-मोंगोडब) – sidgate