我有如下收藏:
{
"_id" : ObjectId("5b5437c1e8c56c92098f684f"),
"name" : "Mongo",
"authors" : [
{
"id" : 1,
"author" : "jack"
},
{
"id" : 2,
"author" : "mack"
}
]
}
我想向authors数组中可用的每条记录添加一个新字段,即edition_year
,以便我的收藏集如下所示:
{
"_id" : ObjectId("5b5437c1e8c56c92098f684f"),
"name" : "Mongo",
"authors" : [
{
"id" : 1,
"author" : "jack",
"edition_year" : 2018
},
{
"id" : 2,
"author" : "mack",
"edition_year" : 2017
}
]
}
我必须写什么update
命令?
答案 0 :(得分:0)
尝试此操作,它将为每个文档中的所有authors数组对象将默认值设置为0。
db.your_collection.find().forEach(function(doc){
var newAuthors=doc.authors;
newAuthors.forEach(function(author){
//sets default value=0;
author.edition_year=0
});
db.your_collection.update({_id:doc._id},{$set:{authors:newAuthors}})
})
答案 1 :(得分:0)
您可以使用全位置运算符$[]
db.col.update({},{ $set: { "authors.$[].edition_year": 2017 } }, { multi: true })