一尘不染

猫鼬删除(拉出)数组中的文档,不适用于ObjectID

node.js

我有以下猫鼬模式:

user = {
    "userId" : "myId",
    "connections":
    [{
        "dateConnectedUnix": 1334567891,
        "isActive": true
    }, {
        "dateConnectedUnix": 1334567893,
        "isActive": false
    }]
}

我想删除connections数组中的第二项,以获取以下信息:

user = {
    "userId" : "myId",
    "connections": 
    [{
        "dateConnectedUnix": 1334567893,
        "isActive": false
    }]
}

以下代码按预期完成了工作:

userAccounts.update({'connections.isActive': false }, 
                    {$pull: { 'connections.isActive':false }}, 
                    function (err,val) {
                        console.log(val)
                    });

但是,我需要基于ObjectId删除。并且以下行不通:

userAccounts.update({'connections._id': '1234-someId-6789' }, 
                    {$pull: { 'connections._id': '1234-someId-6789' }}, 
                    function (err,val) {
                        console.log(val)
                    });

有什么建议?我一直将头撞在屏幕上(又名Google,Stackoverflow等),却没有运气。


阅读 281

收藏
2020-07-07

共1个答案

一尘不染

似乎以上代码无法正常工作。对于我给出的第一个示例,它甚至都不起作用。

这是我的工作代码:

userAccounts.update( 
      { userId: usr.userId },
      { $pull: { connections : { _id : connId } } },
      { safe: true },
      function removeConnectionsCB(err, obj) {
          ...
      });
2020-07-07