查询索引
db.domainevents.getIndexes()
创建索引
db.集合名称.createIndex( { 字段名1-正序: 1, 字段名2-倒序: -1},{ name: “索引名称” }, {background: true} );
background 后台运行不增加锁
db.domainevents.createIndex( { aggregateIdentifier: 1, timeStamp: 1, sequenceNumber: 1},{ name: "orderedEventStreamIndex" }, {background: true} );
/* sagacollection创建索引 */
db.sagacollection.createIndex( { "sagaIdentifier" : 1},{ name: "sagaIdentifierIndex" }, {background: true} );
db.sagacollection.createIndex( { "associations" : 1},{ name: "sagaAssociationsIndex" }, {background: true} );
db.sagacollection.createIndex( { "sagaType" : 1},{ name: "sagaTypeIndex" }, {background: true} );
db.snapshotevents.createIndex( { aggregateIdentifier: 1, type: 1, sequenceNumber: 1}, { name: "uniqueAggregateIndex" },{unique: true}, {background: true} );
查询
db.domainevents.find({ “字段名称” : “值”}).pretty()
db.domainevents.find({ "aggregateIdentifier" : "300109"}).pretty()
查询正在执行
db.currentOp()
currentOp的输出结果里,每个请求包含一个opid字段,有了opid,就可以发送killOp来干掉对应的请求。
db.killOp()
db.killOp(opid)
为了验证我们使用使用了索引,可以使用 explain 命令:
db.user.find({tags:"music"}).explain();
stage的类型的意义
mongodb的文档中列出了前4种类型,还有一些没有列出来,但是会比较常见,这里一并解释一下。
COLLSCAN :全表扫描
IXSCAN:索引扫描
FETCH::根据索引去检索指定document
SHARD_MERGE:各个分片返回数据进行merge
SORT:表明在内存中进行了排序(与前期版本的scanAndOrder:true一致)
SORT_MERGE:表明在内存中进行了排序后再合并
LIMIT:使用limit限制返回数
SKIP:使用skip进行跳过
IDHACK:针对_id进行查询
SHARDING_FILTER:通过mongos对分片数据进行查询
COUNT:利用db.coll.count()之类进行count运算
COUNTSCAN:count不使用用Index进行count时的stage返回
COUNT_SCAN:count使用了Index进行count时的stage返回
SUBPLA:未使用到索引的$or查询的stage返回
TEXT:使用全文索引进行查询时候的stage返回
附:explain查询结果解析官方文档:
https://docs.mongodb.org/v3.0/reference/explain-results/
————————————————
版权声明:本文为CSDN博主「琦彦」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fly910905/article/details/78336961
设置慢查询时间,查询慢查询日志
慢查询时间500 毫秒
db.setProfilingLevel(1,500);
查询日志limit10
db.system.profile.find().sort({$natural:-1}).limit(1)
聚合查询
$group分组查询 条数大于1的数据_Id
db.snapshotevents.aggregate([{$group : {_id : {aggregateIdentifier : "$aggregateIdentifier", type : "$type", sequenceNumber : "$sequenceNumber"},
'count':{'$sum':NumberInt(1)},
last1 : {$last : "$_id"}}},
{'$match':{'count':{$gt:1} }}
])
https://www.runoob.com/mongodb/mongodb-query.html
https://blog.csdn.net/wll_1017/article/details/78029273