我想在文档中添加多个子文档。
添加它们的正确方法是什么?
db.document.update({'_id':99999},{$set:{'student':{'name':'Jack','marks':90}}})
db.document.update({'_id':99999},{$set:{'student':{'name':'Jill','marks':75}}})
上面的语句在文档中插入最后一个子文档。
使用数组更新运算符会出错。
很抱歉,如果这是重新发布的话。无法在任何地方找到答案。
答案 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}}})