简体   繁体   English

如何使用MongoRepository接口从Spring Mongo中的数组获取指定的对象字段

[英]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.

相关问题 如何使用 MongoRepository 接口更新 mongo db 中的特定字段? - How to update particular field in mongo db by using MongoRepository Interface? 无法使用MongoRepository从Spring在Mongo DB中保存值 - Not able to save value In Mongo DB from Spring using MongoRepository 如何使用spring数据从mongo集合中仅获取指定的对象类 - How to get only specified object class from mongo collection with spring data 如何从 MongoRepository/QueryDSL 获取不同的字段? - How do I get distinct fields from MongoRepository/QueryDSL? 如何使用 spring 数据 mongorepository 方法仅获取选定的 mongo id? - How to fetch only selected mongo ids using spring data mongorepository method? 使用Spring Data Mongo从MongoDB获取数组元素 - Get array element from MongoDB using Spring Data Mongo 如何使用Spring数据从Mongo中的数组文档字段中仅获取匹配结果 - How to Get Only Matched Result from An Array Field of Document in Mongo Using Spring Data Mockito 或嵌入式 Mongo 用于单元测试 spring mongorepository - Mockito or Embedded Mongo for unit testing spring mongorepository Spring mongo - 来自数组和检查的总和字段大于 - Spring mongo - Sum fields from array amd check greater than 使用 mongorepository 更新特定字段 - update specific fields using mongorepository
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM