为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
qq_花开花谢_0 2022-10-17 16:02:18
我参与过 Go 和 MongoDb 项目。其中,我遇到了一个问题。我已经使用 $in 运算符将整数的动态切片 ([]int) 传递到查询中。每件事看起来都很好,但是当这个切片为空时,它会返回一个错误“$in 需要一个数组”。但是我将它用作搜索参数,并且如果我传递空白数组,则它与所有数组匹配。注意:我使用的是 MongoDB shell 版本 v5.0.3这是我的代码:var searchedProfiles []intsearchFilter := bson.M{"customer.id": bson.M{"$in": searchedProfiles}}newQry := []bson.M{    {"$lookup": bson.M{        "localField":   "cid",        "from":         "customers",        "foreignField": "_id",        "as":           "customer"}},    {"$match": searchFilter},}如果有人有任何想法,请告诉我。谢谢!
查看完整描述

1 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

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

searchedProfiles = []int{}

这将被编组到一个空数组中,因此您不会收到相关错误。

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

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


查看完整回答
反对 回复 2022-10-17
  • 1 回答
  • 0 关注
  • 69 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信