【问题标题】:How to get the specified object fields from array in spring mongo using MongoRepository interface如何使用MongoRepository接口从spring mongo中的数组中获取指定的对象字段
【发布时间】:2018-12-06 08:01:14
【问题描述】:

Json 对象

{
    "_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"
        }
    ]
}

我使用下面的链接从数组中获取对象之一:

get the specified fields from array

当我像这样查询时

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

调用存储库从具有多个字段的数组中查找所需对象

myRepositroy.findByDayAndTime("Fri","1800"));

以下是用于查询多个字段的方法,如

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

但我得到的是输出第二个索引数组对象而不是第三个索引数组对象。

如何通过使用具有 ("Fri","1800") 等值的查询从数组中获取唯一需要的对象

【问题讨论】:

    标签: java spring-boot spring-data-mongodb


    【解决方案1】:

    查询有问题。只需替换此代码

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

    它对我有用。很高兴与 doc mongodb 官方文档一起使用 Projection Operator

    【讨论】:

      猜你喜欢
      • 2016-12-22
      • 1970-01-01
      • 2016-06-12
      • 2018-02-17
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      • 2019-08-12
      • 2014-09-10
      相关资源
      最近更新 更多