2013-02-23 73 views
1

我想我已經得到了與MongoDB的很舒服,直到我跑了以下問題。我在下面的格式文檔的集合:如何從文檔數組中刪除子文檔<condition>?

{ 
    "_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」,其中「級」不等於「A」的所有子文件。

我嘗試了很多不同的查詢,但沒有奏效。不過,我認爲以下將是肯定的工作,但它沒有之一:

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

我碰到下面的陣列,當我運行上面的命令:

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

任何人都可以點我在正確的方向嗎?

+1

這工作時,我試了一下。您的集合中有其他文檔,其中'course_list'不是數組? – JohnnyHK 2013-02-23 19:10:23

+0

太棒了,我不知道$ pull - 我一直在返回文檔,過濾數組並重新保存。沒有任何幫助,但你已經幫助我,歡呼。 – 2013-02-24 00:06:56

回答

0

JohnnyHK,

感謝您的評論。我的查詢確實是正確的。正如您正確地指出的那樣,錯誤是因爲course_list不是數組的文檔。

--su