MongoDB嵌套文档的修改

发表日期:  Creative Commons Licence

mongodb是文档型的,那么如果一个文档嵌套另外一个文档,如何对这个嵌套文档进行增删改查呢,例如:

{
  "_id": 1,
  "author": [
    {
      "name": "Bob"
    },
    {
      "name": "Alice"
    },
    {
      "name": "Mike"
    }
  ]
}

若是要对author内部的object进行增添、修改、删除之类的操作,需要用到$push,$pop,$pull,$set三个修改器。

  • 增加一个object:

    db.collection.update({_id:1},{$push:{"author":{"name": "AnotherGuy"}}});
    
  • 删除最后一个值,若要删除第一个则为-1:

    db.collection.update({_id:1},{$pop:{"author":1});
    
  • 删除指定筛选值:

    db.collection.update({_id:1},{$pull:{"author":{"name": "Alice"}}});
    
  • 修改第一个值的age字段(若无则添加age字段)

    db.collection.update({_id:1},{$set:{"author.0.age": 19}});
    

附上另一篇关于$set字段的常用方法和其他update内容:http://blog.csdn.net/leshami/article/details/54930588