嵌套数组更新;在一个字段中使用两个$符号; MongoDB 1.8.2

时间:2011-07-26 07:19:49

标签: mongodb

我有一个分层数据结构,为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 个答案:

答案 0 :(得分:2)

您不能使用两个位置运算符。根据:http://www.mongodb.org/display/DOCS/Updating:

$运算符(单独)表示“查询中匹配数组项的位置”。使用它来查找数组成员,然后对其进行操作。

目前,$运算符仅适用于查询中的第一个匹配项。