2013-09-05 1 views
0

제 질문은 OPA 데이터베이스 상위 레벨 API에 관한 것입니다.특정 속성 (지도 색인을 사용하지 않음)에 대한 intmap 콜렉션 내 검색

database click = @mongo 
db /click/click : intmap(Scan.scan) 

을 여기에 Scan.scan 유형입니다 :

나는 다음과 같은 데이터 모델을 선언 한

여기 내 문제는 내가 구체적인 '클릭 데이터베이스를 조회 할 필요가있다
type Scan.scan = { 
    user : int 
    qr : int 
    date : Date.date 
} 

"주어진"qr "속성에 대해,하지만 intmap이 사용된다는 사실은 내가 모든 클릭을 검색하도록 강요 한 다음, 전체 목록에서 주어진"qr "매개 변수와 일치하는 항목을 수동으로 검색하도록합니다.

내가 실제로하고있는 일은 /click/click을 통해 모든 클릭을 가져 와서 List.filter를 적용하는 것입니다. 그러나 성능 문제가 있습니다 (예 : MongoDB의 작업을하고 있다는 느낌이 들었습니다)

제 질문은 매우 간단합니다. OPA 데이터베이스 고급 API로 뭔가를 놓쳤습니까? 또는 intmap 인덱스 값을 검색 할 수 없어서 클릭 컬렉션에서 데이터 마이그레이션을해야 할 필요가 있습니까? 다른 곳에서는 저장되지 않습니다.

제 질문이 충분히 분명하기를 바랍니다. 답장을 보내 주셔서 감사합니다.

답변

1

이 상황에서 내가 일반적으로하는 일은 다른 색인을 작성하는 것입니다.

db /click/by_qr : intmap(Scan.scan) 

또는

물론
db /click/by_qr : intmap(int) // int represents user id 

,이 인덱스를 유지하기 위해 조심해야 의미합니다. 내 이해는 결국 더 좋은 방법으로 처리 할 수 ​​있지만 바로 지금 수동으로 처리해야한다는 것입니다. 나는 이것이 아주 좋은 해결책이 아니라는 데 동의한다.

+0

intmap() 컬렉션과 관련된 작업을 수행 할 수 없습니다. 나는 데이터베이스 SET 컬렉션으로 마이그레이션해야 할 것입니다. 어쨌든 여전히 관련성있는 답변을 주셔서 감사합니다. 데이터 마이그레이션을 수행해야합니다.) – gogson

관련 문제