我正在尝试更新 MongoDB 数据库中的所有记录。我想根据日期(updatedAt)按升序对记录进行排序。然后根据其当前状态(currentStatus)更新有限数量的记录。
我尝试过,但没有成功:
var count = 20;
var sortUpdatedAt = this.collection.find({}).sort({"updatedAt":1});
try {
this.collection.updateMany(sortUpdatedAt,
{"currentStatus": {$in:["ACTIVE","IDLE"]} },
{ $set: { "currentStatus" : "SHUTDOWN" } }
).limit(count);
} catch (e) {
logger.error(e);
}
创建了变量 sortUpdatedAt 因为我读到 updateMany 不支持 .sort()
最佳答案
不幸的是,find
和 updateMany
不是适合这项工作的工具。相反,您应该查看 aggregation pipeline 。通过$sort
的组合, $filter
,和$limit
聚合运算符,您应该能够执行问题中描述的确切操作。
PS:如果这打算成为您集合的常见操作,请不要忘记向您正在排序的字段添加索引(如果您还没有),以提高性能。
关于javascript - 对记录进行排序,然后在 MongoDB 中使用 updateMany 进行限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55302789/