1

我正在构建一个具有这种结构的作业队列(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%)。因此,我的服务器无法在这种情况下提供新作业。

任何人都可以建议我对此查询更有效的方法吗?

提前致谢 :)

4

0 回答 0