Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何使用排序规则使用正则表达式过滤带有重音的单词_Mongodb - Fatal编程技术网

Mongodb 如何使用排序规则使用正则表达式过滤带有重音的单词

Mongodb 如何使用排序规则使用正则表达式过滤带有重音的单词,mongodb,Mongodb,我试图使用regex/alamo/gi从聚合中获取数据,但数据名是‘DonÁlamo’。而蒙戈什么也不回 我已经尝试过使用排序规则选项,但似乎无法使用正则表达式,没有正则表达式也可以 test.partners.aggregate([ {$match: {'name': '/alamo/gi' }} ],{ collation: { locale: "pt", strength: 1 } }) 如果没有regex,我得到了结果,但当我使用它时,结果不起作用…执行不区分大小写和重

我试图使用regex/alamo/gi从聚合中获取数据,但数据名是‘DonÁlamo’。而蒙戈什么也不回

我已经尝试过使用排序规则选项,但似乎无法使用正则表达式,没有正则表达式也可以

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,索引工作得很好,但我需要更多字段使用它,而文本索引只适用于一个字段:\…但对于只在一个字段中需要它的人来说,这是一个很好的解决方案!谢谢,这是不对的。文本索引支持多个键/字段。蒙戈说得很清楚。可以在单个文本索引中为多个字段编制索引。限制是每个集合只能有一个文本索引。这里有一个多字段。嗨,索引工作得很好,但我需要更多字段使用它,而文本索引只适用于一个字段:\…但对于只在一个字段中需要它的人来说,这是一个很好的解决方案!谢谢,这是不对的。文本索引支持多个键/字段。蒙戈说得很清楚。可以在单个文本索引中为多个字段编制索引。限制是每个集合只能有一个文本索引。这是一个多字段。