Это строки реального запуска на синтетических документах. Своя коллекция после проверки удалена.
Планы и время ниже — диагностика конкретного стенда, не норматив скорости. Случайные имена учебных объектов заменены подписями.
План заданного multikey-индекса
{
"explainVersion": "1",
"queryPlanner": {
"namespace": "<учебная база>.<учебная коллекция>",
"parsedQuery": {
"variants": {
"$elemMatch": {
"$and": [
{
"color": {
"$eq": "red"
}
},
{
"stock": {
"$gt": 0
}
}
]
}
}
},
"indexFilterSet": false,
"queryHash": "D47AC6D7",
"planCacheShapeHash": "D47AC6D7",
"planCacheKey": "64E5D2C0",
"optimizationTimeMillis": 0,
"maxIndexedOrSolutionsReached": false,
"maxIndexedAndSolutionsReached": false,
"maxScansToExplodeReached": false,
"prunedSimilarIndexes": false,
"winningPlan": {
"isCached": false,
"stage": "LIMIT",
"limitAmount": 10,
"inputStage": {
"stage": "FETCH",
"filter": {
"variants": {
"$elemMatch": {
"$and": [
{
"color": {
"$eq": "red"
}
},
{
"stock": {
"$gt": 0
}
}
]
}
}
},
"inputStage": {
"stage": "IXSCAN",
"keyPattern": {
"variants.color": 1,
"variants.stock": 1
},
"indexName": "variant_stock",
"isMultiKey": true,
"multiKeyPaths": {
"variants.color": [
"variants"
],
"variants.stock": [
"variants"
]
},
"isUnique": false,
"isSparse": false,
"isPartial": false,
"indexVersion": 2,
"direction": "forward",
"indexBounds": {
"variants.color": [
"[\"red\", \"red\"]"
],
"variants.stock": [
"(0, inf.0]"
]
}
}
}
},
"rejectedPlans": []
},
"executionStats": {
"executionSuccess": true,
"nReturned": 1,
"executionTimeMillis": 0,
"totalKeysExamined": 1,
"totalDocsExamined": 1,
"executionStages": {
"isCached": false,
"stage": "LIMIT",
"nReturned": 1,
"executionTimeMillisEstimate": 0,
"works": 2,
"advanced": 1,
"needTime": 0,
"needYield": 0,
"saveState": 0,
"restoreState": 0,
"isEOF": 1,
"limitAmount": 10,
"inputStage": {
"stage": "FETCH",
"filter": {
"variants": {
"$elemMatch": {
"$and": [
{
"color": {
"$eq": "red"
}
},
{
"stock": {
"$gt": 0
}
}
]
}
}
},
"nReturned": 1,
"executionTimeMillisEstimate": 0,
"works": 2,
"advanced": 1,
"needTime": 0,
"needYield": 0,
"saveState": 0,
"restoreState": 0,
"isEOF": 1,
"docsExamined": 1,
"alreadyHasObj": 0,
"inputStage": {
"stage": "IXSCAN",
"nReturned": 1,
"executionTimeMillisEstimate": 0,
"works": 2,
"advanced": 1,
"needTime": 0,
"needYield": 0,
"saveState": 0,
"restoreState": 0,
"isEOF": 1,
"keyPattern": {
"variants.color": 1,
"variants.stock": 1
},
"indexName": "variant_stock",
"isMultiKey": true,
"multiKeyPaths": {
"variants.color": [
"variants"
],
"variants.stock": [
"variants"
]
},
"isUnique": false,
"isSparse": false,
"isPartial": false,
"indexVersion": 2,
"direction": "forward",
"indexBounds": {
"variants.color": [
"[\"red\", \"red\"]"
],
"variants.stock": [
"(0, inf.0]"
]
},
"keysExamined": 1,
"seeks": 1,
"dupsTested": 1,
"dupsDropped": 0
}
}
}
},
"queryShapeHash": "7C9D1B23A4D37205636B89CB5389272032E9B855BDAAC8E41618343732EB86AE",
"command": {
"find": "<учебная коллекция>",
"filter": {
"variants": {
"$elemMatch": {
"color": "red",
"stock": {
"$gt": 0
}
}
}
},
"hint": "variant_stock",
"limit": 10,
"maxTimeMS": 1000,
"$db": "<учебная база>"
},
"ok": 1
}PHP 8.5.11; mongodb 2.5.5; MongoDB 8.0.34.