Go连接Mongo Atlas查询异常:通用查询失败,特定查询正常
问题原因与解决办法
你遇到的"document is nil"错误,核心原因是Mongo Go驱动不允许直接用nil作为Find()的查询过滤器。哪怕你想执行匹配所有文档的空查询,也得显式传入一个空的BSON结构,不能传nil。
解决步骤
把原来传nil的代码,替换成bson.D{}或者bson.M{}——这两个都表示空查询条件,能匹配集合里的所有文档:
// 替换成bson.D{}即可正常执行 cursor, err := commentsCollection.Find(ctx, bson.D{})
或者用bson.M{}也完全没问题:
cursor, err := commentsCollection.Find(ctx, bson.M{})
为什么特定查询能正常工作?
你用bson.M{"email": "roxanne_mckee@gameofthron.es"}查询时,传入的是一个有效的BSON映射对象,符合驱动对参数的合法性要求,所以不会触发错误。而nil会被驱动判定为无效的查询文档,直接抛出"document is nil"异常。
内容的提问来源于stack exchange,提问作者Yoni Mayer
相关产品推荐
相关产品推荐

