【发布时间】:2020-08-04 09:00:23
【问题描述】:
当我运行查询时,
db.getCollection('resources').find({
"owner.firstName": {
"$regularExpression": {
"pattern": "^Del",
"options": "i"
}
}
})
它显示错误消息,
Error: error: {
"ok" : 0,
"errmsg" : "unknown operator: $regularExpression",
"code" : 2,
"codeName" : "BadValue"
}
注意:mongodb版本为4.4.0-rc13,此查询来源于,
private List<Criteria> buildNameSearch(String type,String name){
String names[] = name.split(" ");
ArrayList<Criteria> cr = new ArrayList<Criteria>();
for (String nm : names) {
Criteria criteria = new Criteria();
criteria.orOperator(Criteria.where(type+".firstName").regex("^"+nm),
Criteria.where(type+".lastName").regex("^"+nm));
cr.add(criteria);
}
return cr;
}
Criteria.where(type+".firstName").regex("^"+nm)
请帮帮我...
【问题讨论】:
-
应该是:
$regex -
Spring Query
Criteria.where(type+".firstName").regex("^"+nm)返回给我的是$regularExpression而不是$regex -
$regularExpression是从 spring-data-mongodb 代码派生的MongoDB Extended Json - 它是一个表示不是实际的正则表达式运算符。通常,如果您将集合数据导出到 JSON,您会注意到日期、ObjectId 等对象字段在输出 JSON 文件中显示为扩展 JSON(因为这些 BSON 类型没有 JSON 表示)。这也是,类似的。错误消息是适当的,并且是意料之中的。 -
知道了,感谢您帮助我。
标签: mongodb spring-boot