相关疑难解决方法(0)

mongodb $regex 中排序规则的使用

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

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

考虑示例集合 testcoll:

{ "_id" : ObjectId("586b7a0163aff45945462bea"), "city" : "Antwerpen" }, 
{ "_id" : ObjectId("586b7a0663aff45945462beb"), "city" : "Antwërpen" }
Run Code Online (Sandbox Code Playgroud)

此查询将找到两条记录

db.testcoll.find({city: 'antwerpen'}).collation({"locale" : "en_US", "strength" : 1});
Run Code Online (Sandbox Code Playgroud)

使用正则表达式的相同查询不会(仅查找带有“Antwerpen”的记录)

db.testcoll.find({city: /antwe/i}).collation({"locale" : "en_US", "strength" : 1});
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query

6
推荐指数
2
解决办法
1970
查看次数

手动向MongoDB查询提供参数以支持排序规则功能(不区分大小写的索引)

我已经安装了当前的开发版本3.3.11,以测试不区分大小写的索引,该索引显然根据https://jira.mongodb.org/browse/SERVER-90支持。我已经从mongo shell和简单的测试数据库中进行了尝试,它似乎确实可以工作。

不幸的是,即使在索引创建过程中指定了排序规则(和强度),也必须指定与之相同的排序规则参数,.find以便获得不区分大小写的匹配。如果查询中省略排序规则,则索引的行为区分大小写。

甚至最新的C#MongoDB驱动程序(2.3.0-beta1)似乎也不支持向查询提供排序规则参数。因此,即使我已经升级了引擎和数据库C#驱动程序,并使用所需的排序规则创建了索引,但似乎无法使用当前驱动程序获得结果。

是否有“手动”方式为查询提供额外的参数?

c# mongodb mongodb-query mongodb-.net-driver

4
推荐指数
1
解决办法
1359
查看次数

标签 统计

mongodb ×2

mongodb-query ×2

c# ×1

mongodb-.net-driver ×1