2014-09-08 4 views
0

Мне нужно запросить mongodb, и я использую morphia для этого. мне нужно сделать что-то вроде этогоЗапрос mongodb с помощью Morphia

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) 
       ) 
      ); 

Кроме того, ниже запрос MongoDB для вышеприведенного

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

Пожалуйста, помогите.

+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 никогда не будет соответствовать следовательно doesNotExist. Странно, что он не дает предупреждения. У вас отключена функцияValidation()?

+0

все еще не работает ... Is doesNotExist() выполняет функцию проверки null? Нет, я не использовал disableValidation(). Разве это имеет значение? – Anand

+0

doesNotExist() вернет false, если значение null в базе данных. Вы должны будете проверить оба, если это возможно. Вы бы сказали, что морфия не будет хранить нули, чтобы вы могли просто выполнить проверку существования. – evanchooly

Смежные вопросы