gpt4 book ai didi

mongodb - 在spring mongodb查询中指定多个条件

转载 作者:行者123 更新时间:2023-12-04 11:51:23 24 4
gpt4 key购买 nike

我正在遍历键/值对列表并为每个键/值执行 find 。我可以在 sql 中创建一个单一的查询文档作为联合,这样只会有一个数据库调用。

    List<User> userList = new ArrayList<User>();
for (Map accounts:attributes) {
Query query = new Query();
List<Criteria> andCriteriaList = new ArrayList<Criteria>();
accounts.forEach((key, value) -> {
Criteria criteria = Criteria.where((String) key).is(value);
andCriteriaList.add(criteria);
});
query.addCriteria(new Criteria().andOperator(andCriteriaList.toArray(new Criteria[andCriteriaList.size()])));
if (mongoTemplate.exists(query, User.class)) {
userList.add((User)mongoTemplate.find(query, User.class));
//System.out.println(mongoTemplate.find(query, User.class));
}

谢谢,

最佳答案

您可以重构您的代码以创建 $or表达式。没有明确$and运算符(operator)需要。

就像是

 Query orQuery = new Query();
Criteria orCriteria = new Criteria();
List<Criteria> orExpression = new ArrayList<>();
for (Map<String, Object> accounts : attributes) {
Criteria expression = new Criteria();
accounts.forEach((key, value) -> expression.and(key).is(value));
orExpression.add(expression);
}
orQuery.addCriteria(orCriteria.orOperator(orExpression.toArray(new Criteria[orExpression.size()])));
List<User> userList = mongoOperations.find(orQuery, User.class);

这应该输出查询
{ "$or" : [{ "key1" : "value1", "key2" : "value2" }, { "key3" : "value3", "key4" : "value4" }] }

关于mongodb - 在spring mongodb查询中指定多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45719225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com