mongodb - mongodb $regex 中排序规则的使用

标签 mongodb mongodb-query

由于 v3.4 排序规则可用于查找操作,尤其是在关注变音符号的匹配时。虽然具有确定值($eq opeartor 或相应构造)的查找查询将匹配字母和对应的变音符号,但如果使用 $regex 来实现部分搜索字符串(“LIKE” )。

是否可以让 $regex 查询以与 $eq 查询相同的方式使用排序规则?

考虑示例集合 testcoll:

{ "_id" : ObjectId("586b7a0163aff45945462bea"), "city" : "Antwerpen" }, 
{ "_id" : ObjectId("586b7a0663aff45945462beb"), "city" : "Antwërpen" }

此查询将找到两条记录
db.testcoll.find({city: 'antwerpen'}).collation({"locale" : "en_US", "strength" : 1});

使用正则表达式的相同查询不会(仅查找带有“Antwerpen”的记录)
db.testcoll.find({city: /antwe/i}).collation({"locale" : "en_US", "strength" : 1});

最佳答案

Documentation

不区分大小写的正则表达式查询通常不能有效地使用索引。 $regex 实现不支持排序规则,并且无法使用不区分大小写的索引。

关于mongodb - mongodb $regex 中排序规则的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41441071/

相关文章:

javascript - Mongoose Validation - 执行多个自定义验证

python - 如何在 mongodb 的嵌入式列表中使用 $gt 和 $lt

javascript - 如何合并和求和 MongoDB 的结果

json - mongoimport 失败与 "The _id field cannot be changed from"不一致

java - 如何将 MongoDB 日期字符串转换为 Jasper 报表中的日期对象?

MongoDB 2.4 新的文本索引功能

mongodb - 如何检查文档中是否存在某个元素并根据它返回 true 或 false?

javascript - 在 mongodb 中节省时间

mongodb - MongoDB 查询中的多个过滤器

mongodb - 如何将Mongodb时间点数据分组为连续的时间组?