【问题标题】:How to make query to find past six months date in mongodb如何在mongodb中查询过去六个月的日期
【发布时间】:2020-05-13 05:33:31
【问题描述】:

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

我有一个场景,我想要每周的数量总和,我已经实现了,但我想进行一个查询,可以找到从当前日期到过去六个月日期的日期,那么我如何在 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)

【问题讨论】:

    标签: mongodb mongodb-query aggregation-framework


    【解决方案1】:

    您可以尝试以下查询:

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

    测试: mongoplayground

    【讨论】:

    • 它今天给我的日期是 5 月 13 日,而在操场上它显示的是 11 月 12 日
    • @Ronak07 : 甚至 console.log(new Date()) & console.log(new Date(Date.now() - 15770000000)) 也一样 :-)
    • 嘿@whoami 有没有其他方法可以解决它,所以我可以得到正确的日期
    • @Ronak07 :我住在一个有很多因素会影响结果的地方,那么确切的问题是你得到了相同的时间而不是日期?你能给我们样品吗..你为什么不把这个日期作为输入来从代码中查询?
    猜你喜欢
    • 2018-11-30
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    相关资源
    最近更新 更多