mgo $all 用一个数组查询一个数组并且不区分大小写?
mgo $all query an array with an array and be case insensitive?
我有一组动态的成分名称,并为每个用户提供。我想将它与 mongo
文档相匹配,其中有一个 array
个名为 ingredients
的对象,它有一个 属性 name
。我写了一个查询(见下文),它将从 URL 中获取查询参数,并将 return 所有具有所有匹配成分名称的文档,但是此搜索区分大小写,我想它不是。
我考虑过将 bson.RegEx
与 Option: "i"
结合使用,但我不确定如何形成此查询或将其应用于字符串数组。
这里是区分大小写的查询:
// Check for ingredients, return all recipes that can be made using supplied ingredients
if qryPrms["ingredients"] != nil {
mongodQ["ingredients.name"] = bson.M{"$all": qryPrms["ingredients"]}
}
mongodQ
是我稍后在代码中用来查询集合的 bson.M
。理想情况下,我可以将 RegEx
应用于 qryPrms["ingredients"]
中的每个元素,这样它就会 return 与 cheese
等成分紧密匹配 return swiss cheese
。在使用动态数组进行查询时,我想这也是一个更一般的 mongodb
问题。
我能够使用 for
循环来构建 bson.RegEx
类型的 slice
来完成此操作。
if qryPrms["ingredients"] != nil {
var ingRegEx []bson.RegEx
for i := range qryPrms["ingredients"] {
ingRegEx = append(ingRegEx, bson.RegEx{Pattern: qryPrms["ingredients"][i], Options: "i"})
}
mongodQ["ingredients.name"] = bson.M{"$all": ingRegEx}
}
我有一组动态的成分名称,并为每个用户提供。我想将它与 mongo
文档相匹配,其中有一个 array
个名为 ingredients
的对象,它有一个 属性 name
。我写了一个查询(见下文),它将从 URL 中获取查询参数,并将 return 所有具有所有匹配成分名称的文档,但是此搜索区分大小写,我想它不是。
我考虑过将 bson.RegEx
与 Option: "i"
结合使用,但我不确定如何形成此查询或将其应用于字符串数组。
这里是区分大小写的查询:
// Check for ingredients, return all recipes that can be made using supplied ingredients
if qryPrms["ingredients"] != nil {
mongodQ["ingredients.name"] = bson.M{"$all": qryPrms["ingredients"]}
}
mongodQ
是我稍后在代码中用来查询集合的 bson.M
。理想情况下,我可以将 RegEx
应用于 qryPrms["ingredients"]
中的每个元素,这样它就会 return 与 cheese
等成分紧密匹配 return swiss cheese
。在使用动态数组进行查询时,我想这也是一个更一般的 mongodb
问题。
我能够使用 for
循环来构建 bson.RegEx
类型的 slice
来完成此操作。
if qryPrms["ingredients"] != nil {
var ingRegEx []bson.RegEx
for i := range qryPrms["ingredients"] {
ingRegEx = append(ingRegEx, bson.RegEx{Pattern: qryPrms["ingredients"][i], Options: "i"})
}
mongodQ["ingredients.name"] = bson.M{"$all": ingRegEx}
}