[英]How to get the specified object fields from array in spring mongo using MongoRepository interface
Json Object 杰森对象
{
"_id" : ObjectId("5c07afde9bc2e9ab1dfb6c01"),
"rates" : [
{
"day" : "Mon",
"start" : "0900",
"end" : "1800",
"found " : "active"
},
{
"day" : "Tue",
"start" : "1800",
"end" : "0900",
"found " : "inactive"
},
{
"day" : "Fri",
"start" : "1800",
"end" : "0900",
"found " : "inactive"
}
]
}
I used below link to get one of the object from array: 我使用下面的链接从数组中获取对象之一:
get the specified fields from array 从数组中获取指定的字段
When I query like 当我查询像
myRepositroy.findByDayAndTime("Fri"));
public MyStatus findByDayAndTime(String day) {
// i get required object
Query query = new Query();
query.addCriteria(Criteria.where("rates.day").is(day));
query.fields().include("rates.$");
return mongoTemplate.find(query, MyStatus.class);
}
Calling repository to find required object from array with multiple fields 调用存储库以从具有多个字段的数组中查找所需的对象
myRepositroy.findByDayAndTime("Fri","1800"));
Below is the method used for querying on multiple fields like 以下是用于查询多个字段的方法,例如
public MyStatus findByDayAndTime(String day,String start) {
Query query = new Query();
query.addCriteria(Criteria.where("rates.day").is(day).and("rates.start").is(start));
query.fields().include("rates.$");
return mongoTemplate.find(query, MyStatus.class);
}
but I am getting as a output 2nd index array object instead of 3rd index array object. 但是我得到的是输出第二索引数组对象而不是第三索引数组对象。
How do I get the only required object from array by using query with values like ("Fri","1800") 如何通过使用值(如“ Fri”,“ 1800”)的查询从数组中获取唯一需要的对象
Problem into query. 问题查询。 Just replace with this code 只需替换此代码
public MyStatus findByDayAndTime(String day,String start) {
Query query = new Query();
query.addCriteria(Criteria.where("rates").elemMatch(Criteria.where("day").is(day).and("start").is(start)));
query.fields().include("rates.$");
return mongoTemplate.find(query, MyStatus.class);
}
It's working for me. 它为我工作。 Good to have go with doc mongodb official doc Projection Operator 很高兴与doc mongodb官方doc Projection Operator一起使用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.