如何在数组内的现有json记录中添加新字段

时间:2018-07-25 17:00:14

标签: json mongodb

我有如下收藏:

{
    "_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命令?

2 个答案:

答案 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 })