首页 > 解决方案 > 如何在mongodb中查询过去六个月的日期

问题描述

我遇到了一个问题,我想查询过去六个月的日期。

我有一个场景,我想要每周的数量总和,我已经实现了,但我想进行一个查询,可以找到从当前日期到过去六个月日期的日期,那么我怎样才能实现它 mongodb。

任何帮助,将不胜感激。

db.rxTable.aggregate([
    {
        $addFields: {
            rxDate: {
                $dateFromString: {
                    dateString: "$rxDate"
                }
            },
            quantity: {
                $toInt: "$quantity"
            }
        }
    },
    {
        $group: {
            _id: { $week: '$rxDate' },
            data: {
                $addToSet: "$$ROOT",
            },
            sales: {
                $sum: "$quantity"
            }
        }
    }
])

我还在下面添加了我的查询。

例如,我在控制台中的 javascript 中尝试过这种场景,但我希望在 mongodb 中使用它。

在这里,我发布了我在控制台中尝试过的示例。

var sixMonths = 1.577e+10;

sixMonths
15770000000

Date.now()
1589292791593

var current = Date.now();
undefined

current-sixMonths
1573522803658

Date(current-sixMonths)
"Tue May 12 2020 19:43:45 GMT+0530 (India Standard Time)"

Date(current-sixMonths)
"Tue May 12 2020 19:44:21 GMT+0530 (India Standard Time)"

new Date(current-sixMonths)
Tue Nov 12 2019 07:10:03 GMT+0530 (India Standard Time)

new Date()
Tue May 12 2020 19:55:19 GMT+0530 (India Standard Time)

标签: mongodbmongodb-queryaggregation-framework

解决方案


您可以尝试以下查询:

db.collection.aggregate([
   /** $$NOW gives you current date */
  {
    $project: { sixMonthOldDate: { $subtract: [ "$$NOW", 15770000000 ] } }
  }
])

测试: mongoplayground


推荐阅读