如何从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)来更新它的easeDate
date到«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方法?