MongoDB架构计划发布

时间:2017-04-30 21:53:45

标签: node.js mongoose mongoose-schema

我希望每隔10分钟通过API获取一次数据后发布。

cron和其他人的例行程序完美无缺,但问题出现在我试图获得第一篇文章的日期接近过期且尚未发布或尽可能少的时候。

我尝试使用已发布的时间创建增量字段,更新发布日期等;但是我不能用公式给出,我总是返回相同的结果,同样的文章。

模式

"_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 } })

});

我需要制作一种循环队列,发布那些早先到期的队列(他们有几小时和几天的差异日期),当它结束时,重新开始。但我总是发表第一篇文章,而且我已经没有想法了。

我最好离开几个小时,稍后重拍,当我清醒了。

谢谢!

1 个答案:

答案 0 :(得分:0)

解决!运行以下例程工作正常,我不知道为什么昨天没有工作,除了缺少选择数组元素([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() } });

谢谢!