通过与猫鼬中的不同数组匹配从嵌入式数组中删除元素

Removing elements from embedded array by matching with different array in mongoose

我的 Mongodb 中有一个嵌入的推文数组,每条推文都有一个推文 ID(不要与 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.

有什么想法吗?

提前致谢!

将一个字段与多个值匹配时使用$in

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