2016-12-06 2 views
3
root: { 
    dir: { 
    subDir: { 
     subSubDir: { 
     ... 
     }, 
     ... 
    }, 
    subDir_2: { 
     ... 
    } 
    }, 
    dir_2: { 
    ... 
    }, 
    ... 
} 

어떻게 하나의 키 수준 만 검색하나요? 예 : 나는 dir 아래의 키만 검색하려고합니다. 결과에는 [subDir, subDir_2, ...]과 그 밖의 다른 값이 없어야합니다. 값이없고 중첩 된 키가 없습니다. 가장 효과적인 방법은 무엇입니까?MongoDB : 아이들없이 특정 깊이/중첩을 찾는 방법

+0

[확인] (http://stackoverflow.com/questions/2298870/mongodb-get-names-of-all-keys-in-collection) – Yogesh

+0

각 문서의 구조 또는 현재 사용중인 키를 알고 있습니까? 어떤 깊이에있을 수있는 검색? –

+0

각 특정 순간에 @NenadVracar는 내가 정확히 검색하고 싶은 곳을 알 것입니다. 이 노드까지 정확한 노드와 경로를 알 수 있습니다. 내가 필요로하는 것은 키가 있지만 더 깊지는 않다. – stkvtflw

답변

0

목표를 달성하는 유일한 방법은 재귀 map-reduce를 사용하는 것입니다. 이 방법으로 도달하고자하는 깊이를 처리 할 수 ​​있습니다. 간단한 요소, 개체 또는 배열이 있는지 확인하려면 각 깊이 수준을 확인해야합니다. 게다가 map-reduce는 BSON에서 JSON으로 문서를 변환하고 다시 작동해야하기 때문에 데이터 처리 속도가 느리기 때문에 성능이 좋지 않습니다. 이 방법을 사용하여 mongoDB 용 스키마 분석기를 작성했습니다. 당신이보고 싶다면 여기 the link입니다.
아마도 샤드 드 클러스터에서 map-reduce를 사용할 수 있지만 더 나은 Hadoop입니다! 또는보다 효율적인 성능을위한 Elasticsearch.

관련 문제