最近一直在用mongo尤揣,收集下經(jīng)常用到的mongo命令
工具:Robo 3T
工具特性:支持js腳本,便于增刪改查操作柬祠,但插入大數(shù)據(jù)量不太適合北戏,起兩個shell就報錯,單線程插入數(shù)據(jù)太慢了漫蛔。
1嗜愈、輸出命令的執(zhí)行時間(打印出來的是毫秒):
var start = new Date()
#命令塊
var end = new Date()
end - start
2、查詢(多條件)
1)精確匹配
‘字段名’:'字段值',‘字段名’:'字段值',‘字段名’:'字段值’.........‘字段名’:'字段值'
2)取某個范圍(時間或者序號等)
關(guān)鍵字:
$gte:>=莽龟;
$gt:>蠕嫁;
$lte:<=;
$lt:<
$and:復合條件
復合條件(>= && <=):
“$and”:[{'字段名":{"$gle":xxxx}},{"字段名":{“$lte”:yyy}}]
舉例:某個時間晚于:ISODate("2021-06-07T01:53:24.197Z")毯盈,且早于ISODate("2021-08-07T01:53:24.197Z")
單個條件(>, <):
"字段名":{$gt:ISODate("2021-06-07T01:53:24.197Z")
"字段名":{$lt:ISODate("2021-06-07T01:53:24.197Z")
"$and":[{"字段名":{$gte:ISODate("2021-06-07T01:53:24.197Z")}},{"sendTime":{$lte:ISODate("2021-08-07T01:53:24.197Z")}}]
db.getCollection('collectionName').find(
{
? ? ?'name1':'value1',
//? ? 'name2':'value2',
? ? 'name3':'value3',
? ? "$and":[{"time":{$gte:ISODate("2021-06-07T01:53:24.197Z")}},{"sendTime":{$lte:ISODate("2021-08-07T01:53:24.197Z")}}]
? ? }
)
3剃毒、分頁、過濾搂赋、限制條數(shù)
關(guān)鍵字:skip(num)赘阀、limit(num)
修改page和num,控制分頁參數(shù)
var page = 1
var num = 100
var sk = (page-1)*num
db.getCollection('XMessageSms').find({'value1' : 'name1' }).skip(sk).limit(num))
4脑奠、排序
關(guān)鍵字:sort基公,
格式:sort({字段名:-1/1})
-1--倒序;1--正序
舉例:
db.getCollection('XMessageSms').find({'value1' : 'name1' }).sort({字段名:-1/1}}
又想分頁捺信,又想排序
var page = 1
var num = 100
var sk = (page-1)*num
db.getCollection('XMessageSms').find({'value1' : 'name1' }).skip(sk).limit(num).sort({sendTime:-1})
5酌媒、查看執(zhí)行效率
關(guān)鍵字:.explain("executionStats")
具體使用:在執(zhí)行語句最后面加即可
關(guān)鍵信息--"executionStats" ,“indexFilterSet“
以一次查詢結(jié)果為例:
"indexFilterSet" : false,-----------------------無索引迄靠,有的話是true
"executionStats" : {
? ? ? ? "nReturned" : 100,-----------------------查詢結(jié)果條數(shù)
? ? ? ? "executionTimeMillis" : 15519,--------本次查詢執(zhí)行的時間
? ? ? ? "totalDocsExamined" : 2625240,---------遍歷的總數(shù)據(jù)量
? ??????"inputStage" : {
? ? ? ? ? ? ? ? ? ? "stage" : "COLLSCAN",----------全表遍歷
????????}
}