mongodb在给定的时间间隔更新文档
mongodb update document at given time intervals
我正在实现一个"最低出价拍卖"系统。用户将设置基本价格、降价金额和降价间隔。例如,如果用户设置的基本价格=1000$,降价金额=100$,降价间隔=1小时,3小时后价格将为700$,3.2小时后价格仍为700$、4小时后价格为600$。。。
这些价格存储在mongodb数据库中,需要查询,因此在数据库查询后在node.js中计算当前价格变得非常昂贵。有没有一种方法可以告诉mongodb在给定的时间间隔更新每个文档?我应该实现一个node.js微服务来跟踪所有这些定时器,并在需要时更新文档吗?在实践中,这些时间实际上会很长(通常是几个小时),但我想记下很多时间。
谢谢,Matteo
如果您使用nodejs,您可以使用Agenda来执行此操作:https://github.com/rschmukler/agenda
所以你应该定义一个任务来降低所有商品的价格:
var mongoConnectionString = "mongodb://127.0.0.1/agenda";
var agenda = new Agenda({db: {address: mongoConnectionString}});
agenda.define('reduce prices', {priority: 'high', concurrency: 1}, function(job, done) {
// .. do your db query to reduce the price here
done(); // dont forget to call done!
});
然后每小时调用一次:
agenda.on('ready', function() {
agenda.every('60 minutes', 'reduce prices');
agenda.start();
});
就是这样。如果你正在使用express并将其放在你的express应用程序中,那么你不需要运行单独的cron任务-然而,这个查询将与你的应用程序的其他部分在同一个进程上运行,所以根据你降价的"产品"对象的数量,这可能是个问题,也可能不是个问题。
相关文章:
- 流星收集更新不是在更新文档
- MongoDB findAndModify:>>>查找和更新文档数组中的对象
- Javascript 不会在浏览器中更新文档
- 如何在猫鼬中更新文档后添加一些操作
- Mongoose创建一个文档,如果找不到指定的字段,则更新文档中的数组
- Meteor Update集合-未捕获错误:不允许.不受信任的代码只能通过ID更新文档.[403]
- 基于多个下拉列表值更新文档
- 更新文档,但出现错误:对于未定义的值,强制转换为字符串失败
- 如何在 Meteor 中使用多个输入字段和单个更新按钮更新文档
- 弹性搜索更新文档类型
- Meteor:更新文档数组中的嵌套对象
- 在遍历光标和更新文档时,连接因应用程序错误而关闭
- 如何使用Monk在Javascript中的forEach循环中更新文档
- mongoDB-使用$set和一个对象更新文档
- mongodb在给定的时间间隔更新文档
- 使用mongoDB和node.js更新文档时出错
- 更新文档上的Ajax.准备功能
- CouchDB更新文档
- 创建或更新文档时的触发代码
- 仅当文档与数据库不同时更新文档