Spring Data Mongo Query可以查询多个字段并一次调用返回

时间:2019-03-01 08:47:43

标签: mongodb mongodb-query spring-mongodb

首先,要查询的文档架构如下:

@variable(model1,x[h=1:3,6]==I[h=1:3,6])

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

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

ERROR: MethodError: no method matching constructvariable!(::JuMP.Model, ::JuMP.#_error#103{Tuple{Sym
bol,Expr}}, ::Array{Float64,2}, ::Array{Float64,2}, ::Symbol, ::String, ::Float64)

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

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

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

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

1 个答案:

答案 0 :(得分: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()])));