我有以下收藏:
User {
firstname,
lastname
}
我想通过firstname和/或lastname搜索用户(firstname/lastname/firstname+lastname)。
Criteria criteria = new Criteria();
criteria.orOperator(Criteria.where("firstname").regex(searchQuery),Criteria.where("lastname").regex(searchQuery));
String queryx[] = searchQuery.split(" ");
for(String q : queryx) {
criteria.orOperator(Criteria.where("firstname").regex(searchQuery),Criteria.where("lastname").regex(q));
}
Due to limitations of the com.mongodb.BasicDBObject, you can't add a second '$or' expression specified as '$or : [ { "firstname" : { "$regex" : "john smith"}} , { "lastname" : { "$regex" : "smith"}}]'. Criteria already contains '$or : [ { "firstname" : { "$regex" : "john smith"}} , { "lastname" : { "$regex" : "john"}}]'.
String queryx[] = searchQuery.split(" ");
ArrayList<Criteria> orOperators = new ArrayList<Criteria>();
for(String q : queryx) {
Criteria criteria = new Criteria();
criteria.orOperator(Criteria.where("firstname").regex(searchQuery),Criteria.where("lastname").regex(q));
orOperators.add(criteria);
}
Criteria [] orArray = orOperators.toArray(new Criteria[orOperators.size()]);
Criteria c = Criteria.where("firstname").regex(searchQuery);
c.orOperator(orArray);
Query query = new Query(c).limit(limit);
return mongoOperations.find(query, User.class);
编辑3:
String queryx[] = searchQuery.split(" ");
ArrayList<Criteria> cr = new ArrayList<Criteria>();
for (String q : queryx) {
Criteria criteria = new Criteria();
criteria.orOperator(Criteria.where("firstname").regex(q),
Criteria.where("lastname").regex(q));
cr.add(criteria);
}
Query query = new Query();
for (Criteria cri : cr) {
query.addCriteria(cri); //this is the problem
}
return mongoOperations.find(query, User.class);
错误:
Due to limitations of the com.mongodb.BasicDBObject, you can't add a second 'null' criteria. Query already contains '{ "$or" : [ { "firstname" : { "$regex" : "john smith"}} , { "lastname" : { "$regex" : "john"}}]}'.
要搜索firstname和lastname,可以轻松地执行以下操作:
String queryx[] = searchQuery.split(" ");
ArrayList<Criteria> cr = new ArrayList<Criteria>();
for (String q : queryx) {
Criteria fCriteria = Criteria.where("firstname").regex(q);
cr.add(fCriteria);
Criteria lCriteria = Criteria.where("lastname").regex(q);
cr.add(lCriteria);
}
Criteria c = cr.remove(0);
Criteria [] orArray = orOperators.toArray(new Criteria[orOperators.size()]);
c.orOperator(orArray);
query.addCriteria(c); //this is the problem
return mongoOperations.find(query, User.class);
我有两个字段FirstName和LastName存储在MongoDB中。从前端,我接收到一个字符串,包含名字和姓氏,用空格分隔,我需要一个查找查询,搜索名字和姓氏的组合。
我使用的是Spring数据jpa,MySQL。我有以下实体 Mysql表如下所示, 我想搜索所有
我正在尝试使用查询搜索出生日期 我如何才能搜索dob在等位日期格式?
我有一个集合与几个字段,并希望通过Java程序更新这两个字段名称。例如: 现在我需要将field1重命名为field11。我如何使用spring数据来做。 基本上使用Java https://docs.mongodb.com/manual/reference/operator/update/rename/
我有一个ISODate格式的“DateAdd”Mongo集合 所以现在是当地时间1小时后 当我尝试获取2018-08-31 06:00:00之后添加的记录时,使用以下查询,我无法获取UTC中的记录 在MongoDB中搜索日期字段时,如何转换UTC日期?
我在使用Java搜索MongoDB中的ISODate字段时遇到麻烦。我想找到精确匹配的日期。 下面是我如何查询第一个集合并获取ISODate字段“Timestamp”。一旦我得到这个日期,我想搜索另一个具有相同“Timestamp”值的集合。 。。。 我正在格式化ISODate,因为它以我想要搜索的不同格式返回我的日期。因此,我将其转换为这种模式“yyyy-MM-dd HH: mm: ss” 我找