这是我的集合架构:
var mongoose = require('mongoose');
var urlSchema = new mongoose.Schema({
url: String,
easeDate: { type: Date, index: 1},
created: { type: Date, default: Date.now }
});
我需要使用最早的文档(通过easeDate)执行更新操作,将其easeDate
日期更改为«now + some timeout»并获取受影响的文档。是否有可能在一个请求中?
基本上,我想从集合中创建一个类似队列的东西(“最老的”是下一个拉出来的,即先出先后)。删除网址(集合中的文档)由其他条件完成。我不想从队列中删除,而是通过更新easeDate
来结束它。
最后,我想获取可用的url并为其设置超时,以便下次返回下一个url时。如果它是最后一个url,则由于超时,下次返回null
。
如果我可以更新它,我怎样才能查询数据库(mongoose)以获取下一个网址,其中easyDate< Date.now()?你能用JavaScript举个例子吗?
答案 0 :(得分:1)
如果您从一台计算机访问您的堆栈,您可以使用 findAndRemove :
Model.collection.findAndModify({query:{}, sort:{created: 1}, remove:true})
您需要访问collection
,因为mongoose
没有实现
findAndModify
,您有findOneAndUpdate
但它不会删除文件
更多信息: