我做错了什么或者我不理解$ push(可能不明白).无论如何,我有以下文件:
{ "_id" : ObjectId("501c83051d41c8753e000000"),
"node" : "denver",
"enc" : { "environment" : "production", "classes" : { "denver" : "" } },
"inherit" : "default" }
Run Code Online (Sandbox Code Playgroud)
我正在努力制作这份文件
{ "_id" : ObjectId("501c83051d41c8753e000000"),
"node" : "denver",
"enc" : { "environment" : "production",
"classes" : { "denver" : "", "boulder" : ""} },
"inherit" : "default" }
Run Code Online (Sandbox Code Playgroud)
这是我的更新语句的样子:
col.update({ 'node' : 'denver'},
{ '$push': { 'enc.classes' : {'boulder': ''}}},
True)
Run Code Online (Sandbox Code Playgroud)
我没有收到错误,但文档永远不会更新.如果我将$ push更改为$ set,那么将使用boulder替换denver.
谢谢你的帮助.
Nal*_*lum 12
$push 在这种情况下不起作用,因为您尝试在对象上使用数组函数.
要使用,$push您需要将数据结构更改为以下内容:
{
"_id" : ObjectId("501c83051d41c8753e000000"),
"node" : "denver",
"enc" : {
"environment" : "production",
"classes" : [
"denver"
]
},
"inherit" : "default"
}
Run Code Online (Sandbox Code Playgroud)
然后你的查询将是:
col.update(
{
'node' : 'denver'
},
{
'$push': {
'enc.classes' : 'boulder'
}
},
True
)
Run Code Online (Sandbox Code Playgroud)
小智 9
此查询有效.
db.foo.update({"node": "denver"}, {"$set": {"enc.classes.boulder": ""}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10928 次 |
| 最近记录: |