如何从MongoDB集合中创build并行和顺序的作业队列(FIFO)?

这是我的collections架构:

var mongoose = require('mongoose'); var urlSchema = new mongoose.Schema({ url: String, easeDate: { type: Date, index: 1}, created: { type: Date, default: Date.now } }); 

我需要用最旧的文档(通过easeDate)来更新它的easeDatedate到«now + some timeout»并获取受影响的文档。 是否有可能在一个请求?

基本上,我想从集合中创build一个类似于队列的东西(“最老”的是下一个,即先进先出)。 删除url(collections中的文件)是由其他条件完成的。 我不想从队列中删除,但通过更新easeDate

最后,我想获取可用的url并设置一个超时值,以便下一次返回下一个url。 如果它是最后一个url,则下次返回null ,因为超时。

如果我可以更新它,那么如何查询数据库(mongoose)来获取下一个urleaseDate <Date.now()? 你能举一个JavaScript例子吗?

使用findAndModify()进行sorting

如果你从一台机器访问你的堆栈你可以使用findAndRemove完成

 Model.collection.findAndModify({query:{}, sort:{created: 1}, remove:true}) 

您需要访问collection因为mongoose不执行

findAndModify你有findOneAndUpdate但它不会删除文件

更多信息:

Mongoose是否支持Mongodb的findAndModify方法?