【问题标题】:Removing elements from embedded array by matching with different array in mongoose通过匹配猫鼬中的不同数组从嵌入式数组中删除元素
【发布时间】:2015-02-10 03:10:30
【问题描述】:

我的 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

有什么想法吗?

提前致谢!

【问题讨论】:

    标签: javascript node.js mongodb express mongoose


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-01-16
      • 2018-05-28
      • 2022-08-02
      • 2020-06-10
      • 1970-01-01
      • 2022-01-03
      • 2021-06-14
      • 2023-03-05
      • 2017-12-23
      相关资源
      最近更新 更多