/* 0 */
{
"_id" : ObjectId("55addc2f8dab32aca87ce0bd"),
"partNum" : "part1",
"dest" : "First Part",
"sales" : [
"sale1",
"sale2",
"sale3"
],
"salesData" : {
"sale1" : {
"mcode" : "mc11",
"dtype" : [
"AAA",
"BBB"
]
}
}
}
/* 1 */
{
"_id" : ObjectId("55addc408dab32aca87ce0be"),
"partNum" : "part2",
"dest" : "Second Part",
"sales" : [
"sale1",
"sale2",
"sale3"
],
"salesData" : {
"sale1" : {
"mcode" : "mc22",
"dtype" : [
"AAA",
"BBB"
]
}
}
}
我写mongo脚本的效率不是很高。我的要求是在集合中所有文档中的“mcode”为“mc11”的任何地方向“dtype”数组追加一个值。以上是我收集的两个文档输出。我正在使用下面的脚本来完成它并且它不起作用。谁能帮帮我
db.testingRD.find().forEach( function(myDocument)
{
db.testingRD.update({id: myDocument._id}, {$push : {"salesData.sale1.dtype" : "DDD"}});
});
最佳答案
要在 "mcode"
为 "mc11"
的地方向 "dtype"
数组追加一个值,请使用以下 update 其中 query
对象是更新的选择标准,与 find()
方法中的查询选择器相同, update
对象具有要应用的 $push
修改,然后是可选的 options
文档。如果设置为 true,它会更新满足查询条件的多个文档:
var query = { "salesData.sale1.mcode": "mc11" },
update = {
"$push": { "salesData.sale1.dtype": "DDD" }
},
options = { "multi": true };
db.testingRD.update(query, update, options);
关于mongodb - 将一个值添加到mongo集合中的数组的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31532586/