如何在mongotemplate中使用orOperator

时间:2015-10-01 06:30:00

标签: java mongodb hibernate-criteria

下面是mongo文档结构,

{_id:123,imageShared:{imageId:345,likeCount:2,rateMedia:{rateVal1:1}}}
{_id:124,imageShared:{imageId:346,likeCount:3,rateMedia:{rateVal2:3}}}
{_id:125,imageShared:{imageId:347,likeCount:3}}

现在我需要获取具有rateVal1,rateVal2字段的文档。 为此我做了以下代码...

Query condition = new Query();
condition.addCriteria(
Criteria.where("imageShared.rateMedia.rateVal1").exists(true).
orOperator(Criteria.where("imageShared.rateMedia.rateVal2").exists(true));

我没有得到这些文件,因为我期待着123,124份文件。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您需要获得与查询等效的内容

db.collection.find({
    "$or": [ 
        { "imageShared.rateMedia.rateVal1": { "$exists": true } }, 
        { "imageShared.rateMedia.rateVal2": { "$exists": true } }
    ] 
})

所以你应该尝试以下

Query condition = new Query(
        new Criteria()
        .orOperator(
            Criteria.where("imageShared.rateMedia.rateVal1").exists(true),
            Criteria.where("imageShared.rateMedia.rateVal2").exists(true)
        )
    );