/ / मैंगो डीबी-जोड़न में मौजूदा दस्तावेज के बिना एक नई प्रविष्टि (एक सरणी नहीं) बनाने के लिए जसन ऑब्जेक्ट

मैंगो डीबी-एक नई प्रविष्टि (एक सरणी नहीं) बनाने के बिना मौजूदा दस्तावेज़ में Json ऑब्जेक्ट जोड़ रहा है - json, mongodb

मेरे मोंगोडब में एक जसन ऑब्जेक्ट है जो पहले से डाला गया है।

 {
"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
}
)