次の問題に遭遇するまで、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
誰かが私を正しい方向に向けることができますか?