首页 > 解决方案 > MongoDB - 计算删除条件

问题描述

带有文档的示例集合:

{ _id: ObjectId(...), value: 19293 },
{ _id: ObjectId(...), value: 32123 }

我想删除所有文档,其中value % 1000 == 123,仅保留在集合中:

{ _id: ObjectId(...), value: 19293 }

我知道如何找到所需的文件aggregate-

db.test.aggregate([
    { $addFields: { filterValue: { $mod: ["$value", 1000] } } },
    { $match: { filterValue: 123 } }
])

之后我可以删除我找到的所有内容。但我很感兴趣如何立即删除 `db.test.deleteMany({ ??? }) 中的所有文档,而无需事先搜索。我不能做:

db.test.deleteMany({
    { $mod: ["$value", 1000] }: 123
})

我该怎么做?

标签: mongodbmongodb-query

解决方案


使用条件尝试$expr表达式,$eq

db.test.deleteMany({
    $expr: {
        $eq: [
            { $mod: ["$value", 1000] },
            123
        ]
    }
})

操场


推荐阅读