如何获得mongo当月的最后一天

时间:2016-11-01 18:05:32

标签: mongodb

我有以下代码:

var l_date = new Date();
l_date.setDate(30);
l_date.setHours(23);
l_date.setMinutes(59);
l_date.setSeconds(59);


l_date;

但是我想以编程方式设置月份的最后一天,因为它不是常量,因为使用函数来检索这些数据,如何在mongo中获取它?

3 个答案:

答案 0 :(得分:2)

var userMonth = 0; // January
var userYear = 2016

var d = new Date(userYear, userMonth + 1, 0);

d -> Last day of the userMonth
  

尝试通过Javascript实现本月的最后一天

对于MongoDb

var dayNo = 3

var answer = new Date(ISODate().getTime() + 1000 * 3600 * 24 * dayNo )

此答案将是当前日期的第三天。

答案 1 :(得分:1)

var d= new Date(this.getFullYear(), this.getMonth()+1, 0);
return d.getDate();

用于获取月中最后一天的天数的JavaScript代码

答案 2 :(得分:0)

如果有人想使用aggregation进行计算,那么这会有所帮助。
在MongoDB 4.2中,包含了$$NOW,这是一个可以在聚合管道中访问的变量,该变量将当前时间作为ISODate返回。

db.collection.aggregate([
  {
    "$project": {
      monthEnd: {
        $subtract: [
          {
            $dateFromParts: {
              "year": {
                $year: "$$NOW"
              },
              "month": {
                $add: [
                  {
                    $month: "$$NOW"
                  },
                  1
                ]
              }
            }
          },
          86400000
        ]
      }
    }
  }
])

由于此答案是在2020年7月创建的,因此结果是:

[
  {
    "_id": ObjectId("5a934e000102030405000000"),
    "monthEnd": ISODate("2020-07-31T00:00:00Z")
  }
]