2013-03-04 125 views
0

我有一个包含对象数组的mongodb集合,并且我想根据它们的属性删除一个或多个数组对象。从我的收藏使用mongodb,我如何根据数组的某个属性从数组中删除一个对象?

实例文档:

nickname: "Bob", 
isLibrarian: false, 
region: "South America", 
favoriteBooks: [ 
    { 
     title: "Treasure Island", 
     author: "Robert Louis Stevenson" 
    }, 
    { 
     title: "The Great Gatsby", 
     author: "F. Scott Fitzgerald" 
    }, 
    { 
     title: "Kidnapped", 
     author: "Robert Louis Stevenson" 
    } 
] 

在这个例子中,我怎么删除,从我的每一个集合中的文件,该favoriteBook数组,其作者“罗伯特·路易斯·史蒂文森”比赛中的所有对象?

这样以后该用户的文件将在收集

nickname: "Bob", 
isLibrarian: false, 
region: "South America", 
favoriteBooks: [ 
    { 
     title: "The Great Gatsby", 
     author: "F. Scott Fitzgerald" 
    } 
] 

和其他文件将被史蒂文森被修剪同样的书籍。

预先感谢您的任何见解!我爱MongoDB的,但如果我贪多,我可以在这里嚼我不知道......

回答

2

的MongoDB的下面一行将帮助您删除某个作者相匹配的书籍

db.collection.update(
    {}, 
    {$pull:{favoriteBooks:{author:"Robert Louis Stevenson"}}}, 
    {multi:true} 
); 
+0

添加multi:true,因为OP指定了这个操作应该对集合中的所有文档进行操作,同时也对代码进行了格式化。 – 2013-03-04 08:05:24

+0

似乎不起作用。书对象保留在favoriteBooks数组中。 – 2013-03-06 04:51:17

+0

哎呀,它毕竟工作!至少在这个人为的例子中。现在要弄清楚为什么它不适用于我的更复杂的集合(使用相同的结构构建)。谢谢! – 2013-03-06 04:58:38

相关问题