如何从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