使用Python删除多个MongoDB文档

10

你好,

我正试图使用以下语法从MongoDB集合中删除多个文档。我不知道这是否正确,因为我在互联网上找到它,但无法找到任何证明这种语句合法性的信息:

pymongo_collection_object.remove(
    [
        {
            'sku': '100-00'
        },
        {
            'sku': '200-00'
        }
    ]
, safe=True)
我本来期望上面的代码会删除所有'sku'值为'100-00'或'200-00'的文档,但不幸的是这两个文档仍然存在于集合中。我尝试将'sku'键和它的值都转换为Unicode,因为我知道它们是以此编码存储的。正如你所看到的,我还启用了安全模式,确保服务器端没有任何问题。
非常感谢您的帮助!
1个回答

12
你可以使用$or/$in操作符来实现。尝试这样做:
pymongo_collection_object.remove({'$or': [{'sku': '100-00'}, {'sku': '200-00'}]}, safe=True)
或者
pymongo_collection_object.remove({'sku': {'$in': ['100-00', '200-00']}}, safe=True)

3
顺便提一句,在pymongo(或Python本身)中,条件操作符(在这种情况下为$in和$or)需要被用作字符串,否则会返回语法错误。'$or' 和 '$in'。 - Leandro Ardissone
为什么API公开了可以接受文档数组的插入,但删除操作不支持相同的功能? - g3cko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接