[英]Inset a new field in an array of sub-document
我有以下架构:
{
"name" : "MyName",
"actions" : [{
"kind" : "kind1",
"result" : "result1"
},
{
"kind":"kind1",
"result":"result1"
}
]
}
我想在不同的子文档中插入一个名为“ expected”的新字段。 我尝试了以下命令,但是我遇到了问题:
db.tasks.update({},{$push:{ "actions.expected" : "MyExpected" }},false,true)
can't append to array using string field name expected
您可以使用$ addToSet功能:
http://docs.mongodb.org/manual/reference/operator/update/addToSet/
尝试
db.tasks.update({}, {$addToSet: {'actions.expected': 'MyExpected'}})
您在数组中有json对象,但是在查询中您尝试添加字符串。 那就是为什么你有例外。 您可以按以下方式更新查询。
db.tasks.update({},{$push:{ "actions" : {"expected" : "MyExpected"} }},false,true)
好吧,问题是您试图将$push
到数组中,但是给出的目的地不是数组。
actions.expected
是actions
字段中的expected
字段,您正在将"MyExpected"
推入该数组-但是这样的数组不存在。
假设您具有以下数据,也许可以最好地解释它。 您的查询将在这样的数据结构上工作:
actions : { expected : [] } // actions is an object here
// ... {$push:{ "actions.expected" : "MyExpected" }}
actions : { expected : ["MyExpected"] }
取而代之的是,您可能希望将一个对象推入actions数组:
actions : []
$push : { "actions" : { "expected" : "MyExpected" } }
actions : [ { "expected" : "MyExpected" } ]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.