2013-08-06 134 views
0

我想在文檔中添加多個子文檔。在文檔中添加子文檔

什麼是正確的添加方式?

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

上面的語句在文檔中插入最後一個子文檔。

使用數組更新操作符給出錯誤。

對不起,如果這是重新發布。無法在任何地方找到答案。

回答

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}}}) 
+0

真棒。謝謝。感謝快速回復。 – user2629996