Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 从节点为mongodb native的数组中提取对象_Node.js_Mongodb_Node Mongodb Native - Fatal编程技术网

Node.js 从节点为mongodb native的数组中提取对象

Node.js 从节点为mongodb native的数组中提取对象,node.js,mongodb,node-mongodb-native,Node.js,Mongodb,Node Mongodb Native,我正在为nodejs的mongodb本机驱动程序进行一个简单的操作。 这是我的mongo文档: { "_id" : 1, "foo" : "bar", "baz" : [ { "a" : "b", "c" : 1 }, { "a" : "b", "c" : 2 } ] } 我有一个var,如下所示

我正在为nodejs的mongodb本机驱动程序进行一个简单的操作。 这是我的mongo文档:

{
    "_id" : 1,
    "foo" : "bar",
    "baz" : [
         {
            "a" : "b",
            "c" : 1
         },
         {
            "a" : "b",
            "c" : 2
         }
    ]
}
我有一个var,如下所示:

var removeIt = {"a" : "b", "c" : 1};
collection.update(
        {_id:1}, 
        {$pull:{baz:{a:removeIt.a, c:removeIt.c}}},
        {safe:true},
        function(err, result) {}
);
因此,要从
baz
数组中提取此对象,我尝试执行以下操作:

var removeIt = {"a" : "b", "c" : 1};
collection.update(
        {_id:1}, 
        {$pull:{baz:{a:removeIt.a, c:removeIt.c}}},
        {safe:true},
        function(err, result) {}
);

但这似乎不起作用,我也不明白为什么,有什么想法吗?

我刚刚在MongoShell上试过,下面的方法对我很有效:

> db.test.insert( {
    "_id" : 1,
    "foo" : "bar",
    "baz" : [
         {
            "a" : "b",
            "c" : 1
         },
         {
            "a" : "b",
            "c" : 2
         }
    ]
});

> db.test.findOne();
{ "_id" : 1, "baz" : [ { "a" : "b", "c": 1 }, { "a" : "b", "c" : 2 } ], "foo" : "bar" }

> removeIt = {"a" : "b", "c" : 1};
> db.test.update( { _id: 1 }, { $pull: { baz: removeIt } } );

> db.test.findOne();
{ "_id" : 1, "baz" : [ { "a" : "b", "c" : 2 } ], "foo" : "bar" }
因此,请修改您的:

{$pull:{baz:{a:removeIt.a, c:removeIt.c}}}
致:


它应该会起作用。

我刚刚在MongoShell上试用过,以下几点对我很有用:

> db.test.insert( {
    "_id" : 1,
    "foo" : "bar",
    "baz" : [
         {
            "a" : "b",
            "c" : 1
         },
         {
            "a" : "b",
            "c" : 2
         }
    ]
});

> db.test.findOne();
{ "_id" : 1, "baz" : [ { "a" : "b", "c": 1 }, { "a" : "b", "c" : 2 } ], "foo" : "bar" }

> removeIt = {"a" : "b", "c" : 1};
> db.test.update( { _id: 1 }, { $pull: { baz: removeIt } } );

> db.test.findOne();
{ "_id" : 1, "baz" : [ { "a" : "b", "c" : 2 } ], "foo" : "bar" }
因此,请修改您的:

{$pull:{baz:{a:removeIt.a, c:removeIt.c}}}
致:


它应该可以工作。

我想你需要使用:{$pull:{baz:{removeIt}}},而不是-你试过了吗?谢谢你的评论,但这会抛出一个错误,
{$pull:{baz:removeIt}
只需要像我的实现那样做。我想你需要使用:{$pull:{baz:{removeIt}},相反-你试过了吗?谢谢你的评论,但这会引发一个错误,
{$pull:{baz:removeIt}}
与我的实现完全不同。是的,它在mongo shell中也适用于我,但不适用于节点mongodb本机驱动程序,它在mongo shell中也适用于我,但不适用于节点mongodb本机驱动程序