【问题标题】:How to create full year entry in mongodb如何在 mongodb 中创建全年条目
【发布时间】:2020-09-20 15:23:33
【问题描述】:

我想创建一个表格,其中完整的 365 天条目(或闰年)将以 utc 格式存储,该格式进一步读取为印度时间戳,即 + 5:30

假设我必须创建2020年的条目,然后开始条目会喜欢

2019-12-31T18:30:000  --> On indian time stamp it will be sharp 00 1 JAN 2020
2020-12-31T18:29:59:999  --> 23:59 31 DEC 2020

So suppose these entry is stored, now When any request comes then check the query through {$gte: new Date()}

我将创建系统 cron,它在 1 月 1 日 00:00 调用此函数,以便每年我都有正确的条目。 这是我获取数据的方法。现在我不明白如何创建条目,因为如果我错过任何日期条目,这将毫无意义。

我会暂时帮助但没有成功。有没有人可以指导我。

【问题讨论】:

  • UTC 是时间标准,而不是格式。您可能指的是 ISO 8601 格式,即 2019-12-31T18:30:00Z(尽管同时还有其他 ISO 8601 格式)。

标签: javascript node.js mongodb date momentjs


【解决方案1】:

在客户端发送和发送批量插入时生成该列表可能会更简单。如果你真的想在服务器上创建它,你可以使用聚合,对一个包含至少一个文档的集合运行它:

db.collection.aggregate([
  {$limit: 1},
  {$project: {
      dateFrom: ISODate("2020-01-01T00:00:00.000+05:30"),
      dateTo: ISODate("2021-01-01T00:00:00+05:30")
  }},
  {$addFields: {
      date: {$range: [0, 366]}
  }},
  {$unwind: "$date"},
  {$addFields: {
      date: {
        $add: [
          "$dateFrom",
          {$multiply: [ "$date",86400000 ]}
        ]
      }
  }},
  {$match: {
      $expr: {
        $lt: ["$date", "$dateTo"]
      }
  }},
  {$project: { date: 1 }},
  {$out: "NewCollectionForDates"}
])

【讨论】:

    猜你喜欢
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 2021-06-25
    • 1970-01-01
    相关资源
    最近更新 更多