MongoDB拉出任何数字但不是0

时间:2012-07-23 09:07:11

标签: mongodb

我有一个简单的文档,其中包含现场产品,这是一系列产品。

{
    "products" : [
        {
            "amount" : 0,
            "id" : "9647562"
        }
    ],
}

我想删除数量为0的数组中的所有对象。我认为这很简单:

db.shop.update({}, {"$pull": {"products": {"amount": 0} }});

这不起作用,但确实如此:

db.shop.update({}, {"$pull": {"products": {"amount": 2} }});

所以基本上如果我将数字从2更改为0,它就不再起作用了。正如你所看到的数量是整数,我也试图将其作为整数删除,所以情况并非如此。我还能尝试什么?

1 个答案:

答案 0 :(得分:1)

试试这个:

db.shop.update({}, {"$pull": {"products": {"amount": 0} }},false,true);

摘自update文档:

db.collection.update( criteria, objNew, upsert, multi )

所以,这里你应该有upsert = false和multi = true。 原因:您的匹配条件是{},这意味着匹配所有,因此更新语句在匹配第一行后退出,并且没有对其执行任何操作,更改所有匹配的行,您需要提供标记{{1}如此真实。

示例:

multi