У меня есть коллекция с вложенными полями. Вот образец документа из note_concept_tree
коллекции
{'_id': ObjectId('2d8e5189a4834bc4c1d8f02a'),
'text_key': 123
'concepts':[{'cui':'abc',...},
{'cui':'cde', ...}
]
}
Когда я ищу в неиндексированной коллекции в Pymon go с помощью db.note_concept_tree.find_one()
, я получаю документы. После индексации с помощью:
db.note_concept_tree.create_index([("concepts.cui", "hashed")])
я получаю ноль совпадений с db.note_concept_tree.find_one({"concepts.cui":"abc"})
.
После удаления этого индекса с помощью db.note_concept_tree.drop_index('concepts.cui_hashed')
я снова получаю совпадения.
Сортированные индексы работают нормально (db.note_concept_tree.create_index([("concepts.cui", "hashed")])
), но я предполагаю, что хеширование должно быть быстрее.
Что может go ошибаться и как его отлаживать?
обновление:
Объяснение хешированного запроса:
{'queryPlanner': {'plannerVersion': 1,
'namespace': 'notedb_test.note_concept_tree',
'indexFilterSet': False,
'parsedQuery': {'concepts.cui': {'$eq': 'C0032326'}},
'queryHash': '3D19D0D4',
'planCacheKey': 'E1B1AF79',
'winningPlan': {'stage': 'FETCH',
'filter': {'concepts.cui': {'$eq': 'C0032326'}},
'inputStage': {'stage': 'IXSCAN',
'keyPattern': {'concepts.cui': 'hashed'},
'indexName': 'concepts.cui_hashed',
'isMultiKey': False,
'isUnique': False,
'isSparse': False,
'isPartial': False,
'indexVersion': 2,
'direction': 'forward',
'indexBounds': {'concepts.cui': ['[-2609654341490927349, -2609654341490927349]']}}},
'rejectedPlans': []},
'executionStats': {'executionSuccess': True,
'nReturned': 0,
'executionTimeMillis': 0,
'totalKeysExamined': 0,
'totalDocsExamined': 0,
'executionStages': {'stage': 'FETCH',
'filter': {'concepts.cui': {'$eq': 'C0032326'}},
'nReturned': 0,
'executionTimeMillisEstimate': 0,
'works': 1,
'advanced': 0,
'needTime': 0,
'needYield': 0,
'saveState': 0,
'restoreState': 0,
'isEOF': 1,
'docsExamined': 0,
'alreadyHasObj': 0,
'inputStage': {'stage': 'IXSCAN',
'nReturned': 0,
'executionTimeMillisEstimate': 0,
'works': 1,
'advanced': 0,
'needTime': 0,
'needYield': 0,
'saveState': 0,
'restoreState': 0,
'isEOF': 1,
'keyPattern': {'concepts.cui': 'hashed'},
'indexName': 'concepts.cui_hashed',
'isMultiKey': False,
'isUnique': False,
'isSparse': False,
'isPartial': False,
'indexVersion': 2,
'direction': 'forward',
'indexBounds': {'concepts.cui': ['[-2609654341490927349, -2609654341490927349]']},
'keysExamined': 0,
'seeks': 1,
'dupsTested': 0,
'dupsDropped': 0}},
'allPlansExecution': []},
'serverInfo': {'host': 'xyz',
'port': 27017,
'version': '4.2.0',
'gitVersion': 'a4b751dcf51dd249c5865812b390cfd1c0129c30'},
'ok': 1.0}
Объяснение отсортированного запроса:
{'queryPlanner': {'plannerVersion': 1,
'namespace': 'notedb_test.note_concept_tree',
'indexFilterSet': False,
'parsedQuery': {'concepts.cui': {'$eq': 'C0032326'}},
'queryHash': '3D19D0D4',
'planCacheKey': 'E1B1AF79',
'winningPlan': {'stage': 'FETCH',
'inputStage': {'stage': 'IXSCAN',
'keyPattern': {'concepts.cui': 1},
'indexName': 'concepts.cui_1',
'isMultiKey': True,
'multiKeyPaths': {'concepts.cui': ['concepts']},
'isUnique': False,
'isSparse': False,
'isPartial': False,
'indexVersion': 2,
'direction': 'forward',
'indexBounds': {'concepts.cui': ['["C0032326", "C0032326"]']}}},
'rejectedPlans': []},
'executionStats': {'executionSuccess': True,
'nReturned': 856,
'executionTimeMillis': 2,
'totalKeysExamined': 856,
'totalDocsExamined': 856,
'executionStages': {'stage': 'FETCH',
'nReturned': 856,
'executionTimeMillisEstimate': 0,
'works': 857,
'advanced': 856,
'needTime': 0,
'needYield': 0,
'saveState': 6,
'restoreState': 6,
'isEOF': 1,
'docsExamined': 856,
'alreadyHasObj': 0,
'inputStage': {'stage': 'IXSCAN',
'nReturned': 856,
'executionTimeMillisEstimate': 0,
'works': 857,
'advanced': 856,
'needTime': 0,
'needYield': 0,
'saveState': 6,
'restoreState': 6,
'isEOF': 1,
'keyPattern': {'concepts.cui': 1},
'indexName': 'concepts.cui_1',
'isMultiKey': True,
'multiKeyPaths': {'concepts.cui': ['concepts']},
'isUnique': False,
'isSparse': False,
'isPartial': False,
'indexVersion': 2,
'direction': 'forward',
'indexBounds': {'concepts.cui': ['["C0032326", "C0032326"]']},
'keysExamined': 856,
'seeks': 1,
'dupsTested': 856,
'dupsDropped': 0}},
'allPlansExecution': []},
'serverInfo': {'host': 'xyz',
'port': 27017,
'version': '4.2.0',
'gitVersion': 'a4b751dcf51dd249c5865812b390cfd1c0129c30'},
'ok': 1.0}