小编Mar*_*rco的帖子

Mongo:匹配聚合查询中的日期似乎被忽略

我正在尝试在我的mongo db中运行聚合语句.我有一个文件,其结构(至少)如下:

{
   "_id": ObjectId,
   "date": ISODate,
   "keywordGroupId": NumberLong,
   "ranking": NumberLong,
}
Run Code Online (Sandbox Code Playgroud)

我想运行一个聚合语句,它聚合给定'keywordGroupId'和给定'date'间隔的'ranking'字段.

我一直在尝试使用以下聚合命令:

{ 
    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" } } }
    ]
}
Run Code Online (Sandbox Code Playgroud)

此命令执行时没有错误并返回结果.如果我尝试更改'keywordGroupId'字段的值,则该命令返回不同的值,因此我假设$ match语句适用于该字段(NumberLong).但是,如果我更改'date'范围并且我指定了数据库中没有任何数据的时间间隔,它仍然会返回一个结果(我实际上会期望一个空的结果集).所以我必须假设$ match语句忽略指定的日期间隔.

任何人都可以帮助我这一点吗?

mongodb aggregation-framework

8
推荐指数
2
解决办法
4万
查看次数

标签 统计

aggregation-framework ×1

mongodb ×1