簡體   English   中英

在子文檔數組中插入新字段

[英]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.expectedactions字段中的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM