나는 이런 종류의 SQL 쿼리를 찾고있다.MongoDB에서 가장 자주 발생하는 값을 찾는 가장 좋은 방법은 무엇입니까?
SELECT field, count(*) as counter from table order by counter DESC
이를 달성하는 가장 좋은 방법은 무엇입니까?
감사합니다.
나는 이런 종류의 SQL 쿼리를 찾고있다.MongoDB에서 가장 자주 발생하는 값을 찾는 가장 좋은 방법은 무엇입니까?
SELECT field, count(*) as counter from table order by counter DESC
이를 달성하는 가장 좋은 방법은 무엇입니까?
감사합니다.
Map-Reduce를 사용하십시오. 키와 값 1을 출력하여 각 문서를 매핑 한 다음 간단한 축소 작업을 사용하여 각 문서를 집계합니다. http://www.mongodb.org/display/DOCS/MapReduce
각각의 수를 별도로 추적함으로써 집계 쿼리를 처리 할 수 있습니다. 이렇게하면 "가장 자주 발생하는"컬렉션을 쿼리 할 수 있습니다. 단점 : 데이터가 변경 될 때마다 다른 쓰기를 수행해야합니다.
물론 Map/Reduce를 사용하여 해당 컬렉션을 수시로 업데이트 할 수도 있습니다. 이것은 정보의 정확성과 변경 빈도에 달려 있습니다.
지도/축소 작업을 매우 자주 호출하지 말아야합니다. 인터랙티브 방식 (모든 페이지보기가 아닌)으로 사용되는 것이 아니라 카운트를 업데이트하는 오프라인 프로세스에서 거의 사용하지 않는 것이 좋습니다. 매시간 정도. 따라서 카운트가 매우 빠르게 변경되면 카운터 콜렉션을 사용하십시오.
한 번만 실행하면됩니다. 나는 공연에 관심이 없으며, 나는 단지 답을 원한다. – Zach
그러면 별개의 값을 가져 와서 각각의 수를 쿼리하면됩니다. 그것은 매우 빠르지는 않지만 매우 쉽습니다. – mnemosyn
가장 좋은 방법은 궁금합니다. – Zach