我正在进行查询以从我的书籍集合中提取属性“titlu”的不同的第一个字母,以便根据“titlu”属性的第一个字母对书籍进行分组。我有一些以UTF-8字符开头的标题,如Î,Ţ,Ş等,我收到此错误:
显而易见的问题是:我如何摆脱这个错误?有两种可接受的选择:
但是,转换必须在mongo查询中完成,因为我还需要标题的计数。 (对于解决方案#2,我们需要字母I,例如,以I开头出现的标题的出现以及以Î开头的标题的出现)。
你应该使用$substrCP
而不是$substr
。 $substrCP
是在mongodb 3.4中引入来解决这类问题的,因为$substr
只适用于ASCII字符
来自mongodb文档:
$ substrCP
返回字符串的子字符串。子字符串以字符串中指定的UTF-8代码点(CP)索引(从零开始)处的字符开始,用于指定的代码点数。
所以你的查询将是:
db.carte.aggregate([
{$project: {
preview: {$substrCP: ["$titlu", 0, 1]}
}
}
])
你可以在网上试试:mongoplayground.net/p/X6Mo1yEhJoI