首先,要查询的文档架构如下:
@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?采用不同的框架,如果可能的话,我想避免遍历数组并进行多次调用。
答案 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()])));