为什么这个 MongoDB 聚合查询不返回任何内容?

Cha*_*son 2 mongodb mongodb-query aggregation-framework

我有以下聚合查询:

db.radars.aggregate([
    {
        $group: {
            _id: '$locationId',
            count: {$sum: 1}
        },
    },
    {
        $match: {
            loggedAt: {
                $gte: new Date('2014-01-01T00:00:00Z'),
                $lte: new Date('2016-12-31T00:00:00Z')
            }
        }
    }
]);
Run Code Online (Sandbox Code Playgroud)

我肯定有符合条件的数据:

在此输入图像描述

但我什么也没得到:

在此输入图像描述

有谁知道为什么会发生这种情况?

Joh*_*yHK 5

在 后,管道将包含仅包含:$group中定义的字段的文档,因此没有可匹配的字段。$group_idcountloggedAt

因此,根据您正在寻找的输出,重新排序您的管道以执行$match第一个操作或为loggedAt您的管道添加一个累加器$group,以便其仍然可用。

例如:

db.radars.aggregate([
    {
        $group: {
            _id: '$locationId',
            count: {$sum: 1},
            loggedAt: {$push: '$loggedAt'}
        },
    },
    {
        $match: {
            loggedAt: { $elemMatch: {
                $gte: new Date('2014-01-01T00:00:00Z'),
                $lte: new Date('2016-12-31T00:00:00Z')
            } }
        }
    }
]);
Run Code Online (Sandbox Code Playgroud)