我有一个包含以下字段的文档的MongoDb集合:
{
"_id" : ObjectId("57a3276fcc36bd0100504a95"),
"employeeId" : "5698f1a65d79d07f19ec0ee4",
"isoDate" : ISODate("2016-01-31T23:00:00.000+0000"),
}
查询如下所示:
{ isoDate: {
$gte: new Date("2016-01-30T23:00:00.000+0000"),
$lte: new Date("2016-01-31T23:00:00.000+0000")
},
employeeId: "5698f1a65d79d07f19ec0ee4"
}
当集合中有大约5000个条目时,这个查询在带有SSD的8个Core / 8GB VM中大约需要300ms,这看起来很慢(结果包含大约3到6个文档)。
创建包含employeeId
和isoDate
的索引似乎无法提高效果。
MongoDB版本是3.2。
更新
explain()
的输出如下所示:
{
"queryPlanner": {
"plannerVersion": 1,
"namespace": "calendarentries",
"indexFilterSet": false,
"parsedQuery": {
"$and": [
{
"employeeId": {
"$eq": "5698f1a65d79d07f19ec0ee4"
}
},
{
"isoDate": {
"$lte": {
"$date": "2016-02-10T23:00:00.000+0000"
}
}
},
{
"isoDate": {
"$gte": {
"$date": "2016-01-30T23:00:00.000+0000"
}
}
}
]
},
"winningPlan": {
"stage": "FETCH",
"inputStage": {
"stage": "IXSCAN",
"keyPattern": {
"isoDate": 1,
"employeeId": 1
},
"indexName": "calendarquery",
"isMultiKey": false,
"isUnique": false,
"isSparse": false,
"isPartial": false,
"indexVersion": 1,
"direction": "forward",
"indexBounds": {
"isoDate": [
"[new Date(1454194800000), new Date(1455145200000)]"
],
"employeeId": [
"[\"5698f1a65d79d07f19ec0ee4\", \"5698f1a65d79d07f19ec0ee4\"]"
]
}
}
},
"rejectedPlans": []
},
"executionStats": {
"executionSuccess": true,
"nReturned": 18,
"executionTimeMillis": 0,
"totalKeysExamined": 37,
"totalDocsExamined": 18,
"executionStages": {
"stage": "FETCH",
"nReturned": 18,
"executionTimeMillisEstimate": 0,
"works": 37,
"advanced": 18,
"needTime": 18,
"needYield": 0,
"saveState": 0,
"restoreState": 0,
"isEOF": 1,
"invalidates": 0,
"docsExamined": 18,
"alreadyHasObj": 0,
"inputStage": {
"stage": "IXSCAN",
"nReturned": 18,
"executionTimeMillisEstimate": 0,
"works": 37,
"advanced": 18,
"needTime": 18,
"needYield": 0,
"saveState": 0,
"restoreState": 0,
"isEOF": 1,
"invalidates": 0,
"keyPattern": {
"isoDate": 1,
"employeeId": 1
},
"indexName": "calendarquery",
"isMultiKey": false,
"isUnique": false,
"isSparse": false,
"isPartial": false,
"indexVersion": 1,
"direction": "forward",
"indexBounds": {
"isoDate": [
"[new Date(1454194800000), new Date(1455145200000)]"
],
"employeeId": [
"[\"5698f1a65d79d07f19ec0ee4\", \"5698f1a65d79d07f19ec0ee4\"]"
]
},
"keysExamined": 37,
"dupsTested": 0,
"dupsDropped": 0,
"seenInvalidated": 0
}
},
"allPlansExecution": []
},
"serverInfo": {
"host": "f9e2110ba93e",
"port": 27017,
"version": "3.2.4",
"gitVersion": "e2ee9ffcf9f5a94fad76802e28cc978718bb7a30"
},
"ok": 1
}