使用mongodb,如何根据其中一个属性从数组中删除对象?

时间:2013-03-04 04:09:12

标签: node.js 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"
    }
]

在这个例子中,如何从我的集合中的每个文档中删除作者匹配“Robert Louis Stevenson”的favoriteBook数组中的所有对象?

之后这个用户文档将是

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

和该系列中的其他文件同样会被史蒂文森修剪过。

提前感谢您的任何见解!我喜欢MongoDB,但我想知道我是否咬过的东西比我在这里可以咀嚼...

1 个答案:

答案 0 :(得分:2)

下面的mongodb系列将帮助您删除与特定作者相匹配的图书

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