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

wpf*_*abe 4 c# mongodb mongodb-query mongodb-.net-driver

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

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

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

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

Y.L*_*Y.L 6

现在可以在较新版本的C#mongo驱动程序(自2.4.0开始)中实现。

例如,要查询不区分大小写的索引:

IMongoCollection<SomeObject> someCollection;
var results = someCollection.Find<SomeObject>(x => x.name == someName,
  new FindOptions() {  Collation = new Collation("en", strength: CollationStrength.Secondary) } )
Run Code Online (Sandbox Code Playgroud)

请注意,要享受索引的强大功能,您需要在查询中指定与创建索引时指定的排序规则参数完全相同的排序规则参数。

  • 不适用于土耳其语整理。因为土耳其语中有一个字母 ï;点与 I,它是 ASCII 表的例外。 (2认同)