如何在MongoDB中执行聚合查询时将字符串与日期进行比较?

时间:2017-05-23 16:19:01

标签: mongodb mongoose aggregation-framework isodate

我的MongoDB中有一个名为biosignals的集合,我想执行以下查询:

db.biosignals.aggregate([
        {
            $match: {
                "name": "step",
                "start_date_time": {
                    $gte: start
                }
            }
        },
        {
            $project: {
                "step_count": 1,
                date: {
                    $substr: [ "$start_date_time", 0, 10]
                }
            }
        },
        {
            $group: {
                _id: "$date",
                total: { $sum: "$step_count" }
            }
        },
        {
            $sort: {
                _id: 1
            }
        }
    ])

所以,我想做的是:

  • 获取' name'的所有条目字段等于' step'和'start_date_time'字段大于或等于' start' date(这是我事先定义的参数)
  • 按天分组结果并获取每天所有步骤的总和
  • 最后,根据日期升序对结果进行排序

问题在于' start_date_time' field是一个字符串(这就是我在查询中应用$ substr运算符的原因)而' start'参数是日期(ISODate)。

因此,我无法使用$ gte运算符对它们进行比较。

如何进行比较而无需查看数据库中的所有数据并更改“start_date_time”'格式从字符串到日期?

非常感谢!

0 个答案:

没有答案