2014-09-08 4 views
0

mongodb을 쿼리해야하며이를 수행하려면 morphia을 사용하고 있습니다. 나는이를 시도했지만 작동하지 않았다이Morphia를 사용하여 mongodb를 쿼리하십시오.

select * from table_name where (column_1== null or column_1== value1) AND (column_2= value2 or column_3= value3). 

같은 것을 할 필요가있다.

query.and(
       query.or(
         query.criteria(field1).equal(value1), 
         query.criteria(field1).equal(null) 
       ), 
       query.or(
         query.criteria(field2).equal(value2), 
         query.criteria(field3).equal(value3) 
       ) 
      ); 

또한, 아래 위

db.FILE_JOURNEY.find( {$and :[ { 
            $or: [ { SUBSCRIBERID: "225136298" }, { SUBSCRIBERID : null} ] 
           },  
           { 
            $or: [ { BATCHID : "615060299" }, { FILENAME : "TR.NYHBE.834Q.D.212311980342.QHP.dat" } ] 
           } 
           ] 
         } 
        ) 

도와주세요에 대한 MongoDB의 쿼리입니다.

+0

이 쿼리와 일치 할 것으로 예상되는 예제 문서를 게시 할 수 있습니까? –

답변

0

이 같은 시도하는 경우 :

query.and(
     query.or(
      query.criteria(field1).equal(value1), 
      query.criteria(field1).doesNotExist() 
     ), 
     query.or(
      query.criteria(field2).equal(value2), 
      query.criteria(field3).equal(value3) 
    ) 
    ); 

MongoDB를/모르핀이 null 값으로 필드를 저장하지 않습니다 - 단지 해당 필드를 건너 뛰고, 그래서 필드에 대한 쿼리 = NULL은 따라서 doesNotExist과 일치하지 않을 것입니다. 이상하게도 경고하지 않습니다. disableValidation()을 활성화 했습니까?

+0

여전히 작동하지 않습니다 ... doesNotExist()는 null 확인 기능을 수행합니까 ?? 아니요, disableValidation()을 사용하지 않았습니다. 차이가 있습니까? – Anand

+0

doesNotExist()는 값이 데이터베이스에서 null 인 경우 false를 반환합니다. 둘 중 하나 일 수 있다면 둘 다 확인해야합니다. 당신은 morphia가 nulls를 저장하지 않도록 미리 말하면서 단순히 존재 확인을 할 수 있습니다. – evanchooly