1

次の問題に遭遇するまで、mongodbにかなり慣れていたと思いました。次の形式のドキュメントのコレクションがあります。

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

「Grade」が「A」と等しくない配列「course_list」からすべてのサブドキュメントを削除したいと思います。

さまざまなクエリを試しましたが、何も機能しませんでした。しかし、それでは、次のことが確実に機能すると思いましたが、どちらも機能しませんでした。

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

上記のコマンドを実行すると、次の配列が表示されます。

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

誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

0

ご意見ありがとうございます。私の質問は確かに正しかった。ご指摘のとおり、このエラーは、course_listが配列ではないドキュメントが原因でした。

于 2013-02-25T20:31:09.047 に答える