gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:23:16 24 4
gpt4 key购买 nike

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

我考虑过将 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"] 中的每个元素,这样它会返回紧密匹配的成分,例如 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}
}

关于mongodb - mgo $all 用一个数组查询一个数组并且不区分大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49288761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com