我正在尝试在我的 mongo db 中运行聚合语句。我有一个文件,其结构(至少)如下:
{
"_id": ObjectId,
"date": ISODate,
"keywordGroupId": NumberLong,
"ranking": NumberLong,
}
我想运行一个聚合语句,聚合给定“keywordGroupId”和给定“日期”间隔的“排名”字段。
我一直在尝试使用以下聚合命令:
{
aggregate : "KeywordHistory",
pipeline : [
{ $match: { keywordGroupId: 75 , "$date": {$gte: ISODate("2013-01-01T00:00:00.0Z"), $lt: ISODate("2013-02-01T00:00:00.0Z")}} },
{ $group: { _id: { null }, count: { $sum: "$ranking" } } }
]
}
该命令执行没有错误并返回结果。如果我尝试更改“keywordGroupId”字段的值,该命令将返回不同的值,因此我假设 $match 语句适用于该字段 (NumberLong)。但是,如果我更改“日期”范围并指定数据库中没有任何数据的时间间隔,它仍然会返回结果(我实际上希望得到一个空的结果集)。所以我必须假设 $match 语句忽略了指定的日期间隔。
谁能帮我解决这个问题?