2015-02-10 97 views
2

我在我的Mongodb中嵌入了一組推文,並且每條推文都有一個tweetID(不要與MongoDB分配的ID混淆)。通過與嵌套陣列中的不同陣列進行匹配來移除嵌套陣列中的元素

{ 
"_id": { 
    "$oid": "54d95cb062917897ad26c5e5" 
}, 
"name": "foo", 
"tweets": [ 
    { 
     "tweetID": "1234", 
     "text": "bla bla bla" 
    }, 
    { 
     "tweetID": "4321", 
     "text": "bla bla bla", 
    } 

... and so on 

現在在我的應用程序中,我有另一個數組,應該被刪除的tweetID。

var tweetsToBeDeleted = [ "1234", "4321" ]; 

,我試圖讓貓鼬有這樣做的:

ChannelsModel.update({ }, 
         { $pull: { tweets: { $elemMatch: { tweetID: tweetsToBeDeleted } } } }, 
         { multi: true }, 
         function (err) { 
         console.log("err - " + err); 
         } 
); 

但是,當我嘗試運行此,沒有被刪除。錯誤回調將被執行,但errnull

任何想法?

在此先感謝!

回答

3

使用$in當匹配多個值的字段:

var tweetsToBeDeleted = [ "1234", "4321" ]; 
ChannelsModel.update({ }, 
         { $pull: { tweets: { tweetID: { $in: tweetsToBeDeleted } } } }, 
         { multi: true }, 
         function (err) { 
         console.log("err - " + err); 
         } 
);