Mongodb 如何使用排序规则使用正则表达式过滤带有重音的单词
我试图使用regex/alamo/gi从聚合中获取数据,但数据名是‘DonÁlamo’。而蒙戈什么也不回 我已经尝试过使用排序规则选项,但似乎无法使用正则表达式,没有正则表达式也可以Mongodb 如何使用排序规则使用正则表达式过滤带有重音的单词,mongodb,Mongodb,我试图使用regex/alamo/gi从聚合中获取数据,但数据名是‘DonÁlamo’。而蒙戈什么也不回 我已经尝试过使用排序规则选项,但似乎无法使用正则表达式,没有正则表达式也可以 test.partners.aggregate([ {$match: {'name': '/alamo/gi' }} ],{ collation: { locale: "pt", strength: 1 } }) 如果没有regex,我得到了结果,但当我使用它时,结果不起作用…执行不区分大小写和重
test.partners.aggregate([
{$match: {'name': '/alamo/gi' }}
],{ collation: { locale: "pt", strength: 1 } })
如果没有regex,我得到了结果,但当我使用它时,结果不起作用…执行不区分大小写和重音的搜索最有效的方法是创建一个文本索引,默认语言设置为“无”,并按如下方式执行文本搜索:
db.partners.createIndex(
{
“名称”:“文本”
},
{
“背景”:假,
“默认语言”:“无”
}
)
db.partners.find({
“$text”:{
“$search”:“阿拉莫”,
“$区分大小写”:错误
}
})
希望这有帮助。如果有人感兴趣,下面是生成上述查询的c代码
使用MongoDB.Entities;
使用制度;
使用System.Linq;
命名空间堆栈溢出
{
公共课程
{
公共类合作伙伴:实体
{
公共字符串名称{get;set;}
}
私有静态void Main(字符串[]args)
{
新DB(“测试”);
DB.Index()
.Key(p=>p.Name,KeyType.Text)
.Option(o=>o.DefaultLanguage=“无”)
.Option(o=>o.Background=false)
.Create();
(新[]{
新合伙人{Name=“DonÁlamo”},
}).Save();
var result=DB.SearchText(“阿拉莫”);
WriteLine($”找到:{result.Count()}”);
Console.Read();
}
}
}
执行不区分大小写和重音的搜索的最有效方法是创建一个文本索引,将默认语言设置为“无”,并按如下方式执行文本搜索:
db.partners.createIndex(
{
“名称”:“文本”
},
{
“背景”:假,
“默认语言”:“无”
}
)
db.partners.find({
“$text”:{
“$search”:“阿拉莫”,
“$区分大小写”:错误
}
})
希望这有帮助。如果有人感兴趣,下面是生成上述查询的c代码
使用MongoDB.Entities;
使用制度;
使用System.Linq;
命名空间堆栈溢出
{
公共课程
{
公共类合作伙伴:实体
{
公共字符串名称{get;set;}
}
私有静态void Main(字符串[]args)
{
新DB(“测试”);
DB.Index()
.Key(p=>p.Name,KeyType.Text)
.Option(o=>o.DefaultLanguage=“无”)
.Option(o=>o.Background=false)
.Create();
(新[]{
新合伙人{Name=“DonÁlamo”},
}).Save();
var result=DB.SearchText(“阿拉莫”);
WriteLine($”找到:{result.Count()}”);
Console.Read();
}
}
}
Hi,索引工作得很好,但我需要更多字段使用它,而文本索引只适用于一个字段:\…但对于只在一个字段中需要它的人来说,这是一个很好的解决方案!谢谢,这是不对的。文本索引支持多个键/字段。蒙戈说得很清楚。可以在单个文本索引中为多个字段编制索引。限制是每个集合只能有一个文本索引。这里有一个多字段。嗨,索引工作得很好,但我需要更多字段使用它,而文本索引只适用于一个字段:\…但对于只在一个字段中需要它的人来说,这是一个很好的解决方案!谢谢,这是不对的。文本索引支持多个键/字段。蒙戈说得很清楚。可以在单个文本索引中为多个字段编制索引。限制是每个集合只能有一个文本索引。这是一个多字段。