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

下面是我收集的模式:如何从MongoDB集合中创建并行和顺序的作业队列(FIFO)?

var mongoose = require('mongoose'); 

var urlSchema = new mongoose.Schema({

url: String,

easeDate: { type: Date, index: 1},

created: { type: Date, default: Date.now }

});

我需要做的最早的文件(由easeDate)的更新行动来改变其easeDate日期«现在+一些超时»并得到受影响的文档。是否可以在一个请求中?

基本上,我想从集合中创建一个类似队列的东西(“最老的”一个是下一个,即先进先出)。删除网址(收藏中的文件)是由其他条件完成的。我不想从队列中删除,但通过更新easeDate来结束它。

最后,我想获取可用的网址并为其设置超时时间,以便下一次返回下一个网址。如果这是最后一个网址,则由于超时,下次返回null

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

回答:

使用findAndModify()的排序

如果你从一台机器你可以这样做,用findAndRemove访问你的筹码:

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

您需要访问collection因为mongoose不实施

findAndModify你有findOneAndUpdate个但它不会删除文档

的更多信息:

Does Mongoose support the Mongodb `findAndModify` method?

以上是 如何从MongoDB集合中创建并行和顺序的作业队列(FIFO)? 的全部内容, 来源链接: utcz.com/qa/260093.html

回到顶部