Spring 数据Mongo 一次调用查询多个字段和return
Spring Data Mongo Query to query with multiple fields and return in one call
首先,查询的文档模式如下:
{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 条件,这将 return 文档。我可以用这种方式查询列表中的所有对。但是这种方法将涉及对数据库的大量调用,因为对于列表中的每一对,都有一个数据库调用。
为了避免这种情况,有没有什么办法可以查询列表中每个元素的 AND 条件匹配的所有文档,调用,使用spring数据MongoDbApi?框架不同,如果可能的话,我想避免遍历数组并进行多次调用。
您可以使用 Criteria.orOperator 来 return 每个符合列表中至少一个条件的文档。
构建循环遍历列表的条件列表
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()])));
首先,查询的文档模式如下:
{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 条件,这将 return 文档。我可以用这种方式查询列表中的所有对。但是这种方法将涉及对数据库的大量调用,因为对于列表中的每一对,都有一个数据库调用。
为了避免这种情况,有没有什么办法可以查询列表中每个元素的 AND 条件匹配的所有文档,调用,使用spring数据MongoDbApi?框架不同,如果可能的话,我想避免遍历数组并进行多次调用。
您可以使用 Criteria.orOperator 来 return 每个符合列表中至少一个条件的文档。
构建循环遍历列表的条件列表
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()])));