단일 가격 값 대신 가격 범위 (0-100, 100-200, 200-300 등)별로 rethinkdb에서 문서를 그룹화하려고합니다. 어떻게해야합니까?rethinkdb : 가격대별로 문서 그룹화
0
A
답변
1
불행히도 ReQL은 (see github issue #866) 순간 반올림을 지원하지 않지만 약간의 사소한 불만으로 비슷한 결과를 얻을 수 있습니다.
우선, 정기적으로 또는 대용량 데이터 세트를 실행하려는 경우이 테이블을 색인으로 만드는 것이 좋습니다. 여기에있는 함수는 숫자를 반올림 할 수 없기 때문에 가장 효율적이지 않습니다. 색인을 사용하면 많은 것을 줄일 수 있습니다.
참조 된 특정 언어가 없기 때문에이 코드 샘플은 Python으로되어 있습니다. 0
가 [0-100)
을 위치를 나타냅니다 가격을 기준으로 보조 인덱스를 생성합니다
r.db('foo').table('bar').index_create('price_range',
lambda row: row['price'].coerce_to('STRING').split('.')[0].coerce_to('NUMBER')
.do(lambda x: x.sub(x.mod(100)))).run()
이, 100
는 [100-200)
, 등 : 인덱스, 같은 실행 뭔가를 만듭니다. 이 시점에서, 그룹 별은 간단하다 :
r.db('foo').table('bar').group(
lambda row: row['price'].coerce_to('STRING').split('.')[0].coerce_to('NUMBER')
.do(lambda x: x.sub(x.mod(100)))).run()
이 질의 : 당신이 정말로 오히려 인덱스를 생성하지 않을 경우
r.db('foo').table('bar').group(index='price_range').run()
이 매핑은 단일 쿼리에서 group
동안 수행 할 수 있습니다 상당히 직설적이지만 무슨 일이 일어나고 있는지를 문서화하기 위해 :
coerce_to('STRING')
- 우리는 숫자의 문자열 표현을 얻습니다.318.12
은"318.12"
이됩니다.split('.')
- 문자열을 소수점으로 나눕니다 (예 :"318.12"
.["318", "12"]
이됩니다. 소수점이 없으면 다른 모든 것은 여전히 작동해야합니다.[0]
- 우리는 분할 문자열의 첫 번째 값을 취합니다. 이는 원래의 숫자를 반올림 한 것과 같습니다. 예 :"318"
.coerce_to('NUMBER')
- 문자열을 정수로 다시 변환하므로 모듈로 산술 연산을 수행 할 수 있습니다."318"
은318
이됩니다..do(lambda x: x.sub(x.mod(100)))
- (본질적으로)x = x - (x % 100)
을 실행하여 결과 정수를 가장 가까운 100으로 반올림합니다.318
은300
이됩니다.
관련 문제
- 1. RethinkDB : 각 범주의 임의 문서 가져 오기
- 2. 문서 ID는 RethinkDB 데이터베이스 전체에서 고유합니까?
- 3. rSolr을 사용하여 문서 그룹화
- 4. 필터링 나는이 같은 구조 기록과 RethinkDB 테이블이 RethinkDB
- 5. Mongo 집계 그룹화 하위 문서
- 6. MongoDB : 기준에 따라 문서 그룹화
- 7. RethinkDB + Docker에서 rethinkdb-dump/export를 실행하려면 어떻게해야합니까
- 8. RethinkDB 콜백에
- 9. RethinkDB : OpsWorks
- 10. RethinkDB Polygon.includes
- 11. Rethinkdb : 중첩 된 하위 문서의 하위 문서 포함
- 12. RethinkDB : 모든 필드에 문자열이 포함 된 모든 문서 받기
- 13. 기본 블록 검색을 사용하여 가격대별로 검색
- 14. PHP/MySQL의 가격대별로 필터링하는 방법은 무엇입니까?
- 15. 동일한 전화 번호를 가진 문서 그룹화
- 16. 필드의 부분 문자열을 사용하여 문서 그룹화
- 17. 문서 기반 저장소의 엔터티에 대한 "그룹화 기준"?
- 18. 그룹화 변환의 XSLT Concat HTML 문서
- 19. XSLT와 그룹화 된 XML 문서 결합
- 20. RethinkDB 쿼리 계획
- 21. RethinkDB 트랜잭션 성능 업데이트
- 22. Rethinkdb 고유 키
- 23. 나는이 객체가 어떻게 rethinkdb
- 24. Rethinkdb, Python, Filter
- 25. RethinkDB 가져 오기 오류
- 26. RethinkDB - 여러 고유 필드?
- 27. Rethinkdb 및 GraphQL?
- 28. RethinkDB 테이블 조인
- 29. RethinkDB - 무료 클라이언트
- 30. 퍼널 및 RethinkDB