2013-02-23 70 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

相关问题