2017-01-31 4 views
1

나는 만들고있는 새로운 앱에 MongoDB를 사용하고 있으며, 특정 데이터 만 필요합니다. current (boolean), 위치, 섹터 및 이름 필드가 필요합니다. 위치 필드에는 4 가지 값 중 하나 인 "현금, SPVR, OFF 및 교육"중 하나가 채워지지만 섹터 필드에는 "휴식 또는 근무 중"이라는 두 값 중 하나가 있습니다. 다음 조건이 존재하는 모든 레코드를 제공하는 쿼리를 원합니다. 1. 현재 = TRUE 2. 위치 = "SPVR"또는 "현금"또는 섹터 = "BREAK"및 3. 이름이 NULL이 아닙니다.AND와 OR 조건을 가진 몽고 이드 쿼리

내가 가지고있는 문제는 BREAK 값이있는 수백 개의 레코드가 있지만 대부분의 이름 필드에 값이없는 것입니다. 나는 그들과 관련된 이름이없는 기록을 원하지 않는다. 그래서 위의 두 번째 줄에서 OR이 될 수 있다고 추측하고 있습니까?

이 어떤 도움을 크게 감상 할 수 것 Mongoid 문

get '/currentstate*' do 
    StateTransaction.where(current: true, :position.in =>["SPVR", "CASH"]).to_json 

    end 

에서 MU 현재의 시작입니다.

감사합니다.

+0

작동합니다. 나는 그것이 가능하다는 것을 읽은 아무것도 없다. 나는 OR 부분에 대해 any_of를 사용할 수 있지만 AND를 제외합니다. 나는 다른 길을 시도 할 것이다. – user2843365

답변

2

내가이 하나의 쿼리 문으로 수행 할 수 없다고 생각하기 시작하고있어

StateTransaction.where(current: true, :name.ne => ["",nil]).and(
    StateTransaction.or(
    {:position.in =>["SPVR", "CASH"]}, 
    {sector: "BREAK"} 
).selector 
) 
+0

도움을 주셔서 감사합니다.하지만 불행히도 작동하지 않았습니다. 쿼리가 여전히 위치가 SPVR 또는 현금이고 섹터가 BREAK 인 레코드를 찾고있는 것으로 보입니다. 섹터를 "BREAK"이메일 : "[email protected]"과 같은 다른 필드로 변경하면 두 조건이 모두 맞는 (position = SPVR 및 email = [email protected]) 모든 레코드를 찾을 수 있습니다. 하나 또는 다른 – user2843365

+0

@ user2843365 답변을 –

+0

업데이트했습니다. 정말 고맙습니다!! – user2843365