我试图在我的mongo DB中运行一个聚合语句。我有一个文档,其结构(至少)如下:
{
"_id": ObjectId,
"date": ISODate,
"keywordGroupId": NumberLong,
"ranking": NumberLong,
}
我想运行一个聚合语句,聚合给定'keyword groupid'和给定'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" } } }
]
}
此命令执行时不会出错并返回结果。如果我尝试更改'keyword groupid'字段的值,该命令将返回一个不同的值,因此我假设$match语句适用于该字段(NumberLong)。但是,如果我更改了“date”范围,并且指定了一个数据库中没有任何数据的时间间隔,它仍然会返回一个结果(我实际上希望有一个空的结果集)。所以我必须假设$match语句忽略指定的日期间隔。
有谁能帮我解决这一点吗?
删除$match
的$date
字段上的$
前缀:
{ $match: {
keywordGroupId: 75,
date: {$gte: ISODate("2013-01-01T00:00:00.0Z"), $lt: ISODate("2013-02-01T00:00:00.0Z")}
}},
只有当字段名在值中使用时,才使用$
前缀,而不是作为键使用。
大家好,我有一个大问题在查询我的数据。我有这样的文件: 我想构建两个查询: 1)每天计算标签的数量,然后输出,例如,如下所示: 2)另一个是相同的,但我想设置一个期间从2016-12-13到2016-12-17。 对于第一个查询,我编写了这个查询,并得到了我所搜索的内容,但是在Spring Data Mongo中,我不知道如何编写。
我试图自定义Grails应用程序的日志配置,但appender(及其布局模式)似乎被忽略了。 在配置中。非常棒: Log4J实际上考虑了logger部分(例如,如果我对hibernate的debug和trace行进行注释,那么hibernate语句的记录将按预期停止)。 但我一直在尝试appenders部分的不同版本,似乎都没有考虑,实际上应用于控制台的格式只包括消息本身(例如,如果我编写 在代码
因此,我想运行一个查询来检索过去15天的所有与dateofActivity有关的信息。所以我使用了以下查询: 然后我注意到返回的记录并不局限于过去15天的所有活动。然后我尝试运行查询: 这并不限制查询记录。返回的记录包含了2020年12/27/的一些数据。我在查询中哪里做错了? 另外,基于这个dateofActivity字段检索过去一个月的结果的最佳方法是什么?例如,如果我想在每月的第一天运行此报
JNA还加载正确的库。 这里有人知道为什么不起作用吗?是因为我使用的是带有清单的jar应用程序文件吗? 有人有类似的问题吗?
我试图使用ObjectId作为创建日期持有人,在尝试执行聚合查询时遇到了一些问题。特别是,我们希望使用日期聚合运算符按月份对文档进行分组,但该运算符显然不适用于ObjectId。是否有办法解决这个问题,或者我必须开始在每个文档中使用单独的CreationTime字段? 下面是我尝试的一个查询-
我不熟悉Mongo中的聚合查询,并且一直在努力产生我想要的输出。我有以下聚合查询: 返回以下结果: 如何修改聚合查询,以便只返回2个文档而不是3个文档?将两个“ABC-123”结果合并为一个结果,并使用带有“bu”和“count”字段的新计数数组,即。 非常感谢