$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{}
这将被编组到一个空数组中,因此您不会得到有问题的错误。
但这不会给你所有的文件,这不会给你任何结果(空列表中没有任何内容)。
如果没有搜索到的配置文件,请将其从过滤中排除。
我参与了 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{}
这将被编组到一个空数组中,因此您不会得到有问题的错误。
但这不会给你所有的文件,这不会给你任何结果(空列表中没有任何内容)。
如果没有搜索到的配置文件,请将其从过滤中排除。