2013-08-06 3 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

Смежные вопросы