我的用例如下 - 我在 mongoDB 中有一组文档,我必须发送这些文档进行分析。文件格式如下——
{ _id:ObjectId("517e769164702dacea7c40d8") ,日期:“1359911127494”,状态:“可用”,其他字段... }
我有一个阅读器进程,它选择前 100 个具有status:available按日期排序的文档,并使用status:processing修改它们。ReaderProcess 发送文档进行分析。分析完成后,状态将更改为已处理。
当前阅读器进程首先获取按日期排序的 100 个文档,然后在循环中更新状态以处理每个文档。这种情况有没有更好/有效的解决方案?
此外,将来为了可扩展性,我们可能会使用多个阅读器进程。在这种情况下,我希望一个阅读器进程选择的 100 个文档不应该被另一个阅读器进程选择。但是现在获取和更新是单独的查询,因此多个阅读器进程很可能会选择相同的文档。
批量findAndModify(有限制)可以解决所有这些问题。但不幸的是,它还没有在 MongoDB 中提供。这个问题有什么解决办法吗?