我的mongodb中有一个已插入的Json对象。
{
"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
})
但这是在MetaData文档中创建新条目。但我想在" modules.apis.get销售详细信息"下插入此内容。在同一份文件中 有什么想法吗?
答案 0 :(得分:0)
请尝试通过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
})
答案 1 :(得分:0)
正如我在您的查询中看到的,您键入了错误的appName,我认为您的意思是&abc'而不是' erp'。
.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
}
)