如何在Windows 10的MongoDB Compass中查找auditTrail含连续DELETE的文档
在MongoDB Compass中查找含连续两个DELETE操作的auditTrail数组文档
操作步骤(Windows 10环境下的MongoDB Compass)
由于需要检测数组内的连续元素关系,普通查询无法实现该逻辑,必须使用聚合管道:
- 打开MongoDB Compass,连接到目标数据库和对应集合。
- 切换到顶部的「聚合」(Aggregation)标签页。
- 在聚合管道编辑器中,粘贴以下完整的聚合脚本:
[ { $addFields: { hasConsecutiveDeletes: { $anyElementTrue: { $map: { input: { $range: [0, { $subtract: [{ $size: "$auditTrail" }, 1] }] }, as: "idx", in: { $and: [ { $eq: [{ $arrayElemAt: ["$auditTrail.command", "$$idx"] }, "DELETE"] }, { $eq: [{ $arrayElemAt: ["$auditTrail.command", { $add: ["$$idx", 1] }] }, "DELETE"] } ] } } } } } }, { $match: { hasConsecutiveDeletes: true } }, { $project: { hasConsecutiveDeletes: 0 } } ]
- 点击「执行」(Execute)按钮,即可获取所有符合条件的文档。
脚本逻辑说明
- $addFields阶段:生成临时字段
hasConsecutiveDeletes,通过遍历auditTrail数组的相邻元素,检查是否存在连续两个command为DELETE的条目,最终用$anyElementTrue判断是否满足条件。 - $match阶段:过滤出满足连续DELETE条件的文档。
- $project阶段:可选操作,移除临时生成的
hasConsecutiveDeletes字段,让返回结果更简洁。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

