mgo $all 用一个数组查询一个数组并且不区分大小写?

mgo $all query an array with an array and be case insensitive?

我有一组动态的成分名称,并为每个用户提供。我想将它与 mongo 文档相匹配,其中有一个 array 个名为 ingredients 的对象,它有一个 属性 name。我写了一个查询(见下文),它将从 URL 中获取查询参数,并将 return 所有具有所有匹配成分名称的文档,但是此搜索区分大小写,我想它不是。

我考虑过将 bson.RegExOption: "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}
    }