如何在 MongoTemplate 中使用 orOperator

how to use orOperator in mongotemplate

下面是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));

我没有收到文档,因为我期望 _id 为 123,124 个文档。

感谢您的帮助。

您需要获得查询的等价物

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