1

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

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
Sriram
  • 101
  • 9

1 Answers1

0

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

Dhiren
  • 163
  • 1
  • 10