春天mongo和操作员在同一领域

时间:2014-04-09 12:59:15

标签: java spring mongodb

我正在尝试使用数组值创建和运算符查询。我的代码是

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这样的例外。

2 个答案:

答案 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方法。