$in 运算符如果将空白数组传递给它会出错

$in operator gives error if pass blank array into it

我参与了 Go 和 MongoDb 项目。其中,我遇到了一个问题。我已经使用 $in 运算符将整数 ([]int) 的动态切片传递到查询中。一切似乎都很好,但是当这个切片为空时,它 return 出现错误“$in 需要一个数组”。但是我将它用作搜索参数,并且希望如果我传递空白数组然后它与所有匹配。

注意:我用的是MongoDBshell版本v5.0.3

这是我的代码:

var searchedProfiles []int
searchFilter := bson.M{"customer.id": bson.M{"$in": searchedProfiles}}
newQry := []bson.M{
    {"$lookup": bson.M{
        "localField":   "cid",
        "from":         "customers",
        "foreignField": "_id",
        "as":           "customer"}},
    {"$match": searchFilter},
}

如果有人有任何想法,请告诉我。谢谢!

nil 值未编组为空数组,因此请确保 searchedProfiles 不是 nil 但至少是一个空切片:

searchedProfiles = []int{}

这将被编组到一个空数组中,因此您不会得到有问题的错误。

但这不会给你所有的文件,这不会给你任何结果(空列表中没有任何内容)。

如果没有搜索到的配置文件,请将其从过滤中排除。