我正在努力使用nodejs的mongodb本机驱动程序进行简单的操作。这是我的mongo文档:
{
"_id" : 1,
"foo" : "bar",
"baz" : [
{
"a" : "b",
"c" : 1
},
{
"a" : "b",
"c" : 2
}
]
}我有一个var,如下所示:
var removeIt = {"a" : "b", "c" : 1};因此,为了从baz数组中拉出这个对象,我尝试执行以下操作:
collection.update(
{_id:1},
{$pull:{baz:{a:removeIt.a, c:removeIt.c}}},
{safe:true},
function(err, result) {}
);但这似乎不起作用,我不明白为什么,有什么想法吗?
发布于 2012-11-12 23:10:43
我刚刚在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}}它应该是有效的。
https://stackoverflow.com/questions/13346100
复制相似问题