我正在构建一个具有这种结构的作业队列(Nodejs+Mongodb):
{
"_id" : ObjectId("53e09abd23bbaeea776598e1"),
"createDate" : ISODate("2014-08-05T08:50:05.643Z"),
"status" : "new",
......
}
我在我的系统中定义了 4 种状态:新、等待、工作、失败、完成
要求:我需要在作业队列中选择状态为“新”的最新作业。
目前,我正在使用
jobQueue.findAndModify(
{
status: 'new',
},
{date: 1},
{$set: { ... } },
{remove: false},
function (err, job) {......
当工作文件较少时,效果很好。但也有文件编号的情况。上升到 50k。然后锁定期(使用 mongostat)超过 100%(有时达到 200%)。因此,我的服务器无法在这种情况下提供新作业。
任何人都可以建议我对此查询更有效的方法吗?
提前致谢 :)