【问题标题】:Getting Mongo results from one month ago从一个月前获取 Mongo 结果
【发布时间】:2021-11-12 20:59:15
【问题描述】:

我的数据库中有大约 30-40 条记录,例如之前的示例,我希望获取不到 1 个月的通知(从今天开始)。 Mongo 有没有办法在不必通过 JavaScript 传递今天的日期的情况下获得这些结果?或者如果我必须通过 JavaScript 传递它,我将如何根据我的创建日期处理它?

{
    "_id" : ObjectId("48445b4dc72153e9ad7f3bfb"),
    "notificationID" : "78723asd5-vnbb-xv31-afe0-fa9asf164e4",
    "notification" : "Notification #1",
    "created" : ISODate("2016-11-21T20:33:53.695Z")
}

感谢任何帮助,谢谢。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    MongoDB 有自己的 Javascript 解释器,因此,除非您的 MongoDB 服务器的日期与您的系统不同,否则它会知道当前日期,因此您可以轻松地使用简单的 Javascript 来计算您使用常规 Date 对象查找的值并使用它在您的查询中。

    var d = new Date();
    d.setMonth(d.getMonth() - 1); //1 month ago
    db.data.find({created:{$gte:d}}); //change "data" for your collection's name
    

    如果您需要与数据库不同的日期,恐怕您必须以某种方式将其作为参数传递。

    【讨论】:

      【解决方案2】:
          const now = new Date()
          const temp = new Date(now).setMonth(now.getMonth() - 6);
          const priorSix = new Date(temp)
      
          Table.find({"date" : {$gte: priorSix, $lt: new Date()}}, (err, tables) => {
              if(err) throw new Error(err)
              
              res.status(200).json(tables)
          }).populate('foodList.item')
      

      这段代码对我有用。它检索过去 6 个月的文档 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多