在文档中添加子文档

时间:2013-08-06 16:52:10

标签: mongodb

我想在文档中添加多个子文档。

添加它们的正确方法是什么?

db.document.update({'_id':99999},{$set:{'student':{'name':'Jack','marks':90}}})  
db.document.update({'_id':99999},{$set:{'student':{'name':'Jill','marks':75}}})

上面的语句在文档中插入最后一个子文档。

使用数组更新运算符会出错。

很抱歉,如果这是重新发布的话。无法在任何地方找到答案。

1 个答案:

答案 0 :(得分:4)

数组操作正常工作:

db.document.insert({'_id':99999})
db.document.update({'_id':99999},{$push:{'student':{'name':'Jack','marks':90}}})  
db.document.update({'_id':99999},{$push:{'student':{'name':'Jill','marks':75}}})

现在

db.document.findOne({_id: 99999})

会给你

{
  "_id" : 99999,
  "student" : [
    {
      "name" : "Jack",
      "marks" : 90
    },
    {
      "name" : "Jill",
      "marks" : 75
    }
  ]
}

$push上的错误表示您的文档中已有该字段,而且它不是数组。

例如,以下代码会在$push

上显示错误
db.document.insert({'_id':99998,'student':{'name':'Jack','marks':90}})
db.document.update({'_id':99998},{$push:{'student':{'name':'Jill','marks':75}}})

并且以下代码不会

db.document.insert({'_id':99997,'student':[{'name':'Jack','marks':90}]})
db.document.update({'_id':99997},{$push:{'student':{'name':'Jill','marks':75}}})