使用Morphia查询mongodb

时间:2014-09-08 06:52:34

标签: java 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" } ]  
                                }
                              ] 
                        } 
                    )

请帮忙。

1 个答案:

答案 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 / Morphia不保存具有空值的字段 - 它只是跳过该字段,因此对于field = NULL的查询永远不会匹配doesNotExist。奇怪的是它没有发出警告。你有启用disableValidation()吗?