GoLang mgo - mgo.ErrNotFound for find(...).All(...)

GoLang mgo - mgo.ErrNotFound for find(...).All(...)

我有一个 GoLang 代码:

c.Find(selectQuery).All(&results)
if err == mgo.ErrNotFound {
// error handling
}

selectQuery 值在这里并不重要。

我从来没有收到错误 ErrNotFound。即使查询不匹配任何结果,我也不会得到 ErrNotFound。我得到具有空属性的变量 result。我应该如何更改代码以处理 ErrNotFound 案例?

Query.All() 永远不会 returns mgo.ErrNotFound,所以检查它是没有用的。如果没有结果,results 的长度将为 0,因此如果 没有错误,那么这就是您可以检测到 的方法:

err := c.Find(selectQuery).All(&results)
if err != nil { {
    // error handling
    return
}
// If you must detect "not found" case:
if len(results) == 0 {
    // No results
}

mgo.ErrNotFound 被其他方法使用/返回,通常是那些应该对单个文档进行操作的方法,例如 Query.One() or Query.Apply().