我有一个嵌套字段的集合。这是来自
note_concept_tree
{'_id': ObjectId('2d8e5189a4834bc4c1d8f02a'),
'text_key': 123
'concepts':[{'cui':'abc',...},
{'cui':'cde', ...}
]
}
当我用
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")])
),但我想散列应该更快。
哈希查询解释:
{'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}