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