代码之家  ›  专栏  ›  技术社区  ›  Dima Lituiev Tom Roth

在嵌套字段上添加哈希索引将导致Mongodb中有0个匹配项

  •  0
  • Dima Lituiev Tom Roth  · 技术社区  · 5 年前

    我有一个嵌套字段的集合。这是来自 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}
    
    0 回复  |  直到 5 年前