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

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

本文关键字:数组 元素 删除      更新时间:2023-09-26

我在Mongodb中嵌入了一个tweet数组,每条tweet都有一个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

有什么想法吗?

提前感谢!

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

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