1
노드 js를 사용하여 mongodb 쿼리를 실행하는 데 node-mongodb-native을 사용하고 있습니다. 필드를 다음 한 콜렉션 이름 '위치'가있다 :MongoDB 컬렉션의 다양한 필드에서의 고유 값
sublocality1
, sublocality2
, sublocality3
, city
는.
이 필드에서 전체 고유 값을 가져 오려고합니다.
예 :
이{
'sublocality1':'a',
'sublocality2':'a',
'sublocality3': 'b',
'city': 'c'
}
{
'sublocality1':'b',
'sublocality2':'a',
'sublocality3': 'b',
'city': 'a'
}
쿼리 내가 다음 시도
['a' , 'b', 'c']
를 반환해야합니다 : 문서
Run distinct queries for each of the fields:
collection.distinct('sublocality1',..){},
collection.distinct('sublocality2',..){},
collection.distinct('sublocality3',..){},
collection.distinct('city',..){}
이 목록에 이러한 쿼리의 결과를 삽입 및 검색 목록에있는 별개 항목의 경우
이것을 최적화 할 수 있습니까? 단일 쿼리를 실행할 수 있습니까?
감사합니다. BatScream. 그러나 어떤 이유로 반환하는 빈 배열 :'collection.aggregate ( {$ group : { "_ id": "$ _ id", "subLocality1": {$ push : "$ address_components.subLocality1"} , "subLocality2": {$ push : "$ address_components.subLocality2"}, "subLocality3": {$ push : "$ address_components.subLocality3"}, "도시": {$ push : "$ address_components.city" }}}, {$ project_ {values} : {$ setUnion : [ "$ address_components.subLocality1", "$ address_components.subLocality2", ' –
' "$ address_components.subLocality3", "$ address_components.{$ group : { "_ id": null, "distinct": {$ addToSet : "$ values"}}}, {$ project} "{$ unwind :"$ values "}, {$ group} : –
space 제약 조건을 위해 코드를 두 개의 주석 상자로 나누었습니다. subLoclity1, subLocality2 등은 중첩 된 문서입니다. ' "address_components": { "도시": "하이데라바드" "subLocality1": "Khairatabad" "subLocality2": "", "subLocality3": "", }', –