MongoDB正则表达式忽略名称内的破折号

MongoDB正则表达式忽略名称内的破折号,mongodb,go,Mongodb,Go,我想找到地点。按搜索词命名eq:“圣日耳曼” 我使用go.mongodb.org/mongo-driver/mongo 收集地点看起来像: 类型( 位置结构{ ID primitive.ObjectID`bson:“\u ID,省略空的”json:“\u ID”` 名称字符串`json:“名称,省略空”bson:“名称”` ... } ) 数据库名称看起来像: "Saint-Germain-l'Auxerrois, Paris", "Halles, Paris", "Palais-Royal,

我想找到地点。按搜索词命名eq:
“圣日耳曼”

我使用go.mongodb.org/mongo-driver/mongo

收集地点看起来像:

类型(
位置结构{
ID primitive.ObjectID`bson:“\u ID,省略空的”json:“\u ID”`
名称字符串`json:“名称,省略空”bson:“名称”`
...
}
)
数据库名称看起来像:

"Saint-Germain-l'Auxerrois, Paris",
"Halles, Paris",
"Palais-Royal, Paris",
"Place-Vendôme, Paris",
"Gaillon, Paris",
"Vivienne, Paris",
"Mail, Paris",
"Bonne-Nouvelle, Paris",
"Arts-et-Métiers, Paris",
"Enfants-Rouges, Paris",
"Archives, Paris",
我的mongodb请求:

query:=“圣日耳曼”
三十、 Collection(“places”).Find(context.Background(),bson.M{“name”:primitive.Regex{Pattern:'%1!'+query+“*”,Options:“i”})
想要结果吗

"Saint-Germain-l'Auxerrois, Paris",
我想忽略“破折号”,如何调整“regex”,以便它可以找到“Saint-Germain-l'Auxerrois,Paris”与“Saint-Germain”查询

我想忽略“破折号”,如何调整“regex”,以便它可以找到“Saint-Germain-l'Auxerrois,Paris”与“Saint-Germain”查询

我建议使用来运行对字符串内容执行文本搜索的查询操作,而不是使用来搜索

首先,您需要在集合上创建一个。请注意,集合只能有一个文本搜索索引,但索引可以覆盖多个字段。例如:

db.places.createIndex({"name": "text"})
collection := client.Database("databaseName").Collection("places")
location := "saint germain"
pipeline := mongo.Pipeline{
        {{"$searchBeta", bson.D{
                {"search", bson.D{
                    {"query", location},
                    {"path", "name"}},
                }},
        }},
}
cursor, err := collection.Aggregate(context.Background(), pipeline)
在Go代码中,您可以执行以下操作:

collection := client.Database("databaseName").Collection("places")
query := bson.M{"$text": bson.M{"$search": "saint germain"}}
cursor, err := collection.Find(context.Background(), query)
或者,如果您的集群位于中,并且您正在为更高级的搜索功能寻找细粒度文本索引,请参阅

全文搜索使用户能够利用文本搜索的强大功能。例如:

db.places.createIndex({"name": "text"})
collection := client.Database("databaseName").Collection("places")
location := "saint germain"
pipeline := mongo.Pipeline{
        {{"$searchBeta", bson.D{
                {"search", bson.D{
                    {"query", location},
                    {"path", "name"}},
                }},
        }},
}
cursor, err := collection.Aggregate(context.Background(), pipeline)

上面的代码片段将返回类似的结果
name:“Saint-Germain-l'Auxerrois,Paris”
。这些代码段是使用MongoDB v4.2.x的v1.2.x编写的

您只需要调整正则表达式,那么您的问题是什么?嗨,对不起,如何调整“正则表达式”,以便它可以找到带有“Saint-Germain”查询的“Saint-Germain-l'Auxerrois,Paris”?--据此,MongoDB使用PCRE作为正则表达式实现。你可以用它来定位这些如何工作的信息。你知道这个问题的正则表达式吗?