【问题标题】:MongoDB schema schedule publishMongoDB 模式计划发布
【发布时间】:2017-09-28 10:24:21
【问题描述】:

我想每 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 } })

});

我需要做一个循环队列,发布那些更早过期的(他们有不同的小时和天的日期),当它结束时,重新开始。但我总是发布第一篇文章,但我的想法已经用完了。

我最好先离开几个小时,等我头脑清醒后再重新拍摄。

谢谢!

【问题讨论】:

    标签: node.js mongoose mongoose-schema


    【解决方案1】:

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

    谢谢!

    【讨论】:

      猜你喜欢
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      • 2023-01-29
      • 1970-01-01
      • 2013-02-19
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      相关资源
      最近更新 更多