我有一系列成分名称是动态的,并按用户提供。我希望将其与mongo
文档相匹配,其中array
个对象名为ingredients
,其中包含属性name
。我写了一个查询(见下文),它将从URL获取查询参数,并将返回所有具有所有匹配成分名称的文档,但是这个搜索区分大小写,我希望它不是。
我已考虑将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"]
中的每个元素,这样它就会返回匹配的成分,例如cheese
也会返回swiss cheese
。在使用动态数组进行查询时,这也是一个更普遍的mongodb
问题。
答案 0 :(得分:0)
我能够使用for
循环来构建slice
类型bson.RegEx
。
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}
}