मेरे मोंगोडब में एक जसन ऑब्जेक्ट है जो पहले से डाला गया है।
{
"appname":"abcd",
"appId":"E3456",
"modules":{
"sales":{
"apis":{
"get all sales":{
"method":"get",
"access_ctrl_level":"admin",
"req_fields":[
],
"url":"url_to_api",
"error_code":[
{
"code":502,
"desc":"no authentication"
}
]
}
}
}
}
}
अब मैं "sales.apis" में एक और ऑब्जेक्ट जोड़ना चाहता हूं।
"get sales details":{
"method":"get",
"access_ctrl_level":"admin",
"req_fields":[
"saleNo"
],
"url":"url",
"error_code":[
{
"code":502,
"desc":"no authentication"
}
]
}
मैंने इस नई वस्तु को संग्रह में सम्मिलित करने के लिए दस्तावेज़ को खोजने और संशोधित करने के लिए नीचे दिए गए कोड का उपयोग किया
db.MetaData.findAndModify({query: { $and:[{modules:{sales:{apis:{"get all sales":{method:"get"}}}}},{"appname":"erp"}] },
update: {$set:{modules:{sales:{apis:{"get sales details":{method:"post","access_ctrl_level":"admin","url":"url"}}}}}},
upsert: true
})
लेकिन यह मेटाडेटा दस्तावेज़ में नई प्रविष्टि बना रहा है। लेकिन मैं इसे एक ही दस्तावेज़ में "मॉड्यूल.apis.get बिक्री विवरण" के तहत सम्मिलित करना चाहता हूं कोई उपाय?
उत्तर:
जवाब के लिए 0 № 1कृपया इसके माध्यम से करने का प्रयास करें dot notation
के साथ एक एम्बेडेड दस्तावेज़ के एक क्षेत्र का उपयोग करने के लिए
dot-notation
, के साथ एम्बेडेड दस्तावेज़ नाम को संक्षिप्त करेंdot (.)
और क्षेत्र का नाम, और उद्धरणों में संलग्न करें:
findAndModify({
query: { "modules.sales.apis.get all sales.method":"get",
"appname":"erp"} ,
update: {
$set:{"modules.sales.apis.get sales details":
{"method":"post",
"access_ctrl_level":"admin",
"url":"url"}}},
upsert: true
})
जवाब के लिए 0 № 2
जैसा कि मैंने आपकी क्वेरी में देखा, आपने गलत ऐप टाइप किया, मुझे लगता है कि आपको "erp" के बजाय "abcd" से मतलब है।
.findAndModify(
{
"query": {
"modules.sales.apis.get all sales.method": "get",
"appname": "abcd"
},
"update": {
"$set": {
"modules.sales.apis.get sales details": {
"method": "post",
"access_ctrl_level": "admin",
"url": "url"
}
}
},
"upsert": true
}
)