我使用spring数据mongodb,在想要聚合查询中实现我使用MongoTemplate和聚合方法。当我跟踪日志时,它显示查询如下:
find: track.$cmd { "aggregate" : "stayRecord" , "pipeline" : [ { "$match" : { "vehicleId" : { "$all" : [ 10]}}} , { "$match" : { "stayTime" : { "$gte" : { "$date" : "2016-06-20T18:30:00.000Z"}}}} , { "$match" : { "stayTime" : { "$lt" : { "$date" : "2016-06-21T18:30:00.000Z"}}}} , { "$group" : { "_id" : "$stayTime" , "count" : { "$sum" : 1}}}}
我想知道这个查询的执行计划。我如何才能发现我的索引是否在查询过程中被使用?
请注意,为了遵循下面的步骤,您需要mongo shell能够理解的工作聚合查询。
请遵循以下步骤:-
1)转到mongo Shell2)执行use命令切换到数据库
use <database name>
3)执行下面的查询,希望线程中提到的聚合查询在语法上是正确的,另外,请按照下面的语法相应更改集合名称。
db.YourCollectionName.Explain().Aggregate({“StayRecord”,“Pipeline”:[{“$Match”:{“StayTime”:{“$GTE”:{“$Date”:“2016-06-20T18:30:00.000Z”}}}},{“$Match”:{“StayTime”:{“$Date”:“2016-06-21T18:30:00.000Z”}}}},{“$Group”:{“_ID”:“$StayTime”,“Count”:{“$Sum”:1}}}});
2)在输出中,请找到“winningplan”元素。在input stage(“inputstage”)属性中,如果查询使用了索引,它将显示值为“IXScan”,如果查询使用了索引,它将显示索引名称。否则,它将显示“collScan”,这意味着查询使用了集合扫描(即。未使用索引)。
"winningPlan" : {
"stage" : "LIMIT",
"limitAmount" : 0,
"inputStage" : {
"stage" : "SKIP",
"skipAmount" : 0,
"inputStage" : {
"stage" : "FETCH",
"filter" : {
"user.followers_count" : {
"$gt" : 1000
}
},
"inputStage" : {
"stage" : "IXSCAN",
"keyPattern" : {
"created_at" : -1
},
"indexName" : "created_at_-1",
"isMultiKey" : false,
"direction" : "backward",
"indexBounds" : {
"created_at" : [
"[MinKey, MaxKey]"
]
}
}
}
}
}
问题内容: 这是我第一次在Java中使用Mongo,并且此聚合查询存在一些问题。我可以在Mongo for Spring中执行一些简单的查询,并在我的Repository接口中扩展注解。知道在Spring-Data中进行长时间聚合时采用哪种方法会很有帮助。 问题答案: 您可以实现AggregationOperation 并编写自定义聚合操作查询,然后用于执行您在mongo shell中执行的任何m
这是我第一次在Java中使用Mongo,这个聚合查询有一些问题。我可以在我的存储库界面中使用注释在Mongo for Spring中进行一些简单的查询,这扩展了
>[danger] 注意!!! 使用聚合功能时,必须给它一个别名,以便能够从模型中访问它 > 聚合函数的计算,都是排除了 null 值,所以COUNT( id ) 一般推荐用非空的主键来计算 COUNT 计算数量 const { Sequelize } = app; // 查询班级总人数,按照姓名聚合 const ret = await Student.findAll({ attribut
在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数、所有用户的最大积分、用户的平均成绩等等,ThinkPHP为这些统计操作提供了一系列的内置方法,包括: 方法 说明 count 统计数量,参数是要统计的字段名(可选) max 获取最大值,参数是要统计的字段名(必须) min 获取最小值,参数是要统计的字段名(必须) avg 获取平均值,参数是要统计的字段名(必须) sum
我正在尝试实现一个泛型类(
我是Spring Data MongoDB的新手,我正在尝试用Spring Data MongoDBJava实现聚合查询。我尝试过从这个问题中搜索,并使用进行搜索,但仍然没有结果。 我的数据格式: 我的查询: 这是我在Javascript后端使用的查询,我可以用Mongoose很容易地做到这一点。然而,我对它的Java实现有一些困难。 当我尝试运行此程序时,会出现以下错误: 当我删除从组聚合中,我