繁体   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