MongoDB 架构计划发布
MongoDB schema schedule publish
我想每 10 分钟对 API 获得的数据进行一次 post 发布例程。
cron等的套路完美无缺,但是当我试图获取第一篇接近过期且未发表或尽可能少的文章时,问题就来了。
我试过用已发布的时间创建一个增量字段,更新发布日期等;但是我不能用公式给出,我总是return同样的结果,同样的文章。
架构
"_id": item.ID,
"title": item.title,
"images": [ item.firstImage ],
"url": "none",
"expired": "2017-04-30T22:00:00+03:00",
"lastPublish": "2017-04-30T20:41:02+03:00",
"publish": 0
代码
db.find({}).sort({ 'expired': 1, 'lastPublish': 1 }).limit(1).exec(function(err, doc) {
//db.find({}).sort({ 'publish': 1, 'expired': 1 }).limit(1).exec(function(err, doc) {
db.update({ '_id': doc._id }, { '$set': { 'lastPublish': new Date(), '$inc': { 'publish': 1 } })
});
我需要做一个循环队列,post那些提前到期的(他们有不同的时间和日期),当它结束时,重新开始。但我总是发布第一个 post 而我 运行 没有想法。
我最好先离开几个小时,等我头脑清醒后再重新开始。
谢谢!
已解决! 运行 下面的例程可以正常工作,我不知道为什么昨天没有工作,除了缺少选择数组元素的那个 ([0])。
db.find({}).sort({ 'publish': 1, 'expired': 1 }).limit(1).exec(function(err, doc) {
db.update({ '_id': doc[0]._id }, { '$inc': { 'publish': 1 }, '$set': { 'lastPublish': new Date() } });
谢谢!
我想每 10 分钟对 API 获得的数据进行一次 post 发布例程。
cron等的套路完美无缺,但是当我试图获取第一篇接近过期且未发表或尽可能少的文章时,问题就来了。
我试过用已发布的时间创建一个增量字段,更新发布日期等;但是我不能用公式给出,我总是return同样的结果,同样的文章。
架构
"_id": item.ID,
"title": item.title,
"images": [ item.firstImage ],
"url": "none",
"expired": "2017-04-30T22:00:00+03:00",
"lastPublish": "2017-04-30T20:41:02+03:00",
"publish": 0
代码
db.find({}).sort({ 'expired': 1, 'lastPublish': 1 }).limit(1).exec(function(err, doc) {
//db.find({}).sort({ 'publish': 1, 'expired': 1 }).limit(1).exec(function(err, doc) {
db.update({ '_id': doc._id }, { '$set': { 'lastPublish': new Date(), '$inc': { 'publish': 1 } })
});
我需要做一个循环队列,post那些提前到期的(他们有不同的时间和日期),当它结束时,重新开始。但我总是发布第一个 post 而我 运行 没有想法。
我最好先离开几个小时,等我头脑清醒后再重新开始。
谢谢!
已解决! 运行 下面的例程可以正常工作,我不知道为什么昨天没有工作,除了缺少选择数组元素的那个 ([0])。
db.find({}).sort({ 'publish': 1, 'expired': 1 }).limit(1).exec(function(err, doc) {
db.update({ '_id': doc[0]._id }, { '$inc': { 'publish': 1 }, '$set': { 'lastPublish': new Date() } });
谢谢!