【问题标题】:Spring Data Mongo Query to query with multiple fields and return in one callSpring Data Mongo Query 查询多个字段并一次调用返回
【发布时间】:2019-07-23 06:25:41
【问题描述】:

首先,查询的文档模式如下:

{x:10, y:"temp", z:20} 

集合中还有多个其他文档具有与上述相同的架构。

现在,我有一个列表,其中每个元素包含属于键 x 和 y 的一对值。这可以被描绘为:

       [{10,"temp"}, {20,"temp1"}, .....] 
keys ->  x    y        x    y

现在,我知道,如果我在循环中处理数组并获取每一对,我可以构造如下查询:

query.addCriteria(Criteria.where("x").is(10).and("y").is("temp"))

如果它符合 AND 条件,这将返回文档。我可以以这种方式查询列表中的所有对。但是这种方法会涉及到对数据库的大量调用,因为对于列表中的每一对,都有一个数据库调用。

为避免这种情况,我有什么方法可以查询与列表中每个元素的 AND 条件匹配的所有文档,在单个调用中,使用春季数据MongoDb Api?框架不同,如果可能的话,我想避免遍历数组并进行多次调用。

【问题讨论】:

    标签: mongodb mongodb-query spring-mongodb


    【解决方案1】:

    您可以使用Criteria.orOperator 返回与列表中至少一个条件匹配的每个文档。

    在您的列表中循环构建您的标准列表

    List<Criteria> criteriaList = new ArrayList<>();
    for (item : yourList) {
      criteriaList.add(Criteria.where("x").is(item.x).and("y").is(item.y));
    }
    

    使用orOperator 构建您的查询:

    Query.query(new Criteria.orOperator(criteriaList.toArray(new Criteria[criteriaList.size()])));
    

    【讨论】:

      猜你喜欢
      • 2019-05-13
      • 2013-05-20
      • 2016-01-08
      • 1970-01-01
      • 1970-01-01
      • 2020-03-22
      • 2016-09-01
      • 1970-01-01
      • 2020-05-21
      相关资源
      最近更新 更多