如何从<condition>?</condition>的文档数组中删除子文档

时间:2013-02-23 18:26:33

标签: node.js mongodb

我以为自己对mongodb感到很舒服,直到我遇到以下问题。我有以下格式的文档集合:

{
    "_id" : ObjectId("4f876104d976649cbb1f6cf2"),
    "course_list" : [
        {
            "course_id" : "AL101",
            "Grade" : "A"
        },
        {
            "course_id" : "PS101",
            "Grade" : "B"
        },
        {
            "course_id" : "EL101",
            "Grade" : "B"
        }
    ],
    "user_name" : "jim"
}

我想删除数组“course_list”中的所有子文档,其中“Grade”与“A”不等。

我尝试了一堆不同的查询,但没有任何效果。但是,我认为以下内容肯定会起作用,但它也没有:

db.courses.update({'user_name' : 'jim'}, {$pull : {'course_list' : {'Grade' : {$ne : 'A'}}}})

运行上述命令时,我得到以下数组:

Cannot apply $pull/$pullAll modifier to non-array

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

JohnnyHK,

感谢您的评论。我的查询确实是正确的。正如您正确指出的那样,错误是因为course_list不是数组的文档。

- 苏