我有一个分层数据结构,为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 [$]
感谢您的评论,
答案 0 :(得分:2)
您不能使用两个位置运算符。根据:http://www.mongodb.org/display/DOCS/Updating:
$运算符(单独)表示“查询中匹配数组项的位置”。使用它来查找数组成员,然后对其进行操作。
目前,$运算符仅适用于查询中的第一个匹配项。