[英]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.