2013-03-04 124 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

相關問題