我正在尝试使用数组值创建和运算符查询。我的代码是
String[]={"abc","pqr",xyz};
Criteria criteria = new Criteria();
for (int i = 0; i < splited.length; i++) {
criteria.andOperator(Criteria.where("attribute").regex("^" + splited[i], "i"));
}
Query query=new Query(criteria);
但它给了我一个像Due to limitations of the com.mongodb.BasicDBObject, you can't add a second 'attribute
这样的例外。
答案 0 :(得分:1)
String[]={"abc","pqr",xyz};
Query query = new Query();
Criteria criteria;
for (int i = 0; i < splited.length; i++) {
criteria = Criteria.where("attribute").regex("^" + splited[i], "i");
query.addCriteria(criteria);
}
答案 1 :(得分:0)
为什么要尝试用 $and
拆分这些?您可以在正则表达式中执行此操作:
db.collection.find({
"attribute": {"$regex": "^abc|^pqr|^xyz", "$options": "i" }
})
更不用说实际上看起来像 $or
条件就是正则表达式的作用,你必须真正想要它,因为字符串从一开始就不可能匹配所有这些东西字符串,你只能有一个。
这应该很容易转化为springdata mongo方法。