Обновление вложенного массива; используя два знака $ в одном поле; MongoDB 1.8.2 - PullRequest
1 голос
/ 26 июля 2011

У меня есть иерархическая структура данных, представляющая ответы на каждый вопрос для каждого экзамена для каждого учителя, хранящиеся в MongoDB, как показано ниже:

db.foo.insert({name:"teacher1"}); //Done

db.foo.update({name:"teacher1"},{$push:{"exams":{name:"exam1"}}}); //Done

db.foo.update({"exams.name":"exam1"},{$push:{"exams.$.questions":{name:"question1"}}}); //Done

db.foo.update({"exams.questions.name":"question1"},
    {$push:{"exams.$.questions.$.answers":{name:"answer1"}}}); 

// Error => can't append to array using string field name [$]

Я ценю ваши комментарии,

1 Ответ

2 голосов
/ 18 октября 2011

Вы не можете использовать два позиционных оператора. Согласно: http://www.mongodb.org/display/DOCS/Updating:

Оператор $ (сам по себе) означает «положение соответствующего элемента массива в запросе». Используйте это, чтобы найти член массива и затем манипулировать им.

В настоящее время оператор $ применяется только к первому сопоставленному элементу в запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...