【问题标题】:Updating a sub-document in mongodb?在 mongodb 中更新子文档?
【发布时间】:2012-02-23 03:40:16
【问题描述】:

如何定位authors 数组中的子文档,如下所示,以便更新它?

collection.update({'_id': "4f44af6a024342300e000001"}, {$set: { 'authors.?' }} )

文件:

{
    _id:     "4f44af6a024342300e000001",
    title:   "A book", 
    created: "2012-02-22T14:12:51.305Z"
    authors: [{"_id":"4f44af6a024342300e000002"}] 
}

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    通过像这样指定嵌入文档的实际位置:

    // update _id field of first author    
    collection.update({'_id': "4f44af6a024342300e000001"}, 
                      {$set: { 'authors.0._id': "1" }} )
    

    或通过positional operator:

    // update _id field of first matched by _id author    
    collection.update({'_id': "4f44af6a024342300e000001",
                        //you should specify query for embedded document
                        'authors._id' : "4f44af6a024342300e000002" }, 
         // you can update only one nested document matched by query                   
                        {$set: { 'authors.$._id': "1" }} )
    

    【讨论】:

    • 有没有办法更新所有嵌套文档文档?
    • 请注意,如果要更新集合中的第一个匹配文档以上,请务必将 {multi : true} 作为第三个参数添加到 collection.update
    • 如果不退出会插入新的子文档吗?
    猜你喜欢
    • 2011-08-04
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 2017-10-13
    • 2017-08-15
    • 2014-09-27
    • 1970-01-01
    相关资源
    最近更新 更多