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