2012-05-16 5 views
1

Java로 산술 MongoDB 쿼리를 작성하는 솔루션을 필사적으로 찾고 있습니다. 나는 다음과 같은 쿼리를 시도했습니다MongoDB : Java로 산술 쿼리를 작성하는 방법

((test.value1/test.value2) * 100) > 50 

작동하지 않았다 :

{ {"$multiply" : [{"$divide" : ["$test.value1", "$test.value2"]}, "100"]} : {"$gt" : "50"}} 

잘 모르겠어요 것과 같은 산술 연산을 중첩 예를 들어, 내가 어떻게 다음과 같은 쿼리를 작성 않습니다 위의 내용이 지원됩니다. 사전 제안에 감사드립니다 !!!

답변

2

Lycha의 대답은 $where 아마 같은 임시 쿼리를 만들 수있는 유일한 방법입니다, 정확 . 그러나 그것은 매우 느리고 인덱스를 사용할 수 없습니다.

식이 항상 같은 형식 (a/b > 50) 인 경우 다른 필드에서 해당 부분의 결과를 미리 계산하여 인덱싱하고이 필드를 직접 쿼리하는 것이 좋습니다.

그런 식으로 여러 가지 다른 쿼리를 수행해야하는 경우 누군가가 DB 기술을 잘못 선택했습니다.

+0

우선, 고맙습니다. 이 예제에서 value1과 value2의 값만 쿼리하고 응용 프로그램 측에서 계산을 수행하는 것이 더 좋을 것이라고 생각하십니까? –

+0

이 방법을 사용하면 모든 레코드를 응용 프로그램에로드해야만 다음 번에 일부 레코드를 삭제할 수 있습니다. 극소수 (예 : <100) 인 경우 문제가되지 않을 수 있습니다. –

+0

아쉽게도 1000 개가 넘는 레코드가 있습니다. 그러면 쿼리가 더 나은 선택 인 $가 맞습니까? 집계 프레임 워크는 어떻습니까? 설명서에는 예제가 없으므로 쿼리가 어떻게 보이는지 알 수 없습니다. –

1

당신은 당신이 그것을 자바 스크립트의 조건을 제공 할 수있는 $where operator을 시도 할 수 :

예 :

{ $where: "this.value1/this.value2 > 50" } 
+0

의견을 보내 주셔서 감사합니다. –

관련 문제