【发布时间】:2021-06-22 12:32:41
【问题描述】:
我正在尝试在我的 mongo 数据库中运行聚合语句。我有一份文件,其结构(至少)如下:
{
"_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 语句忽略了指定的日期间隔。
谁能帮我解决这个问题?
【问题讨论】:
标签: mongodb aggregation-framework