我正在使用 Go Mongo 檔案,其中明確撰寫了 FindOne 函式,如果沒有檔案與過濾器匹配,則將回傳 ErrNoDocuments,但是,如果我使用 Find 函式并且沒有找到檔案,則不會回傳此錯誤。有沒有辦法在不獲取所有回傳檔案的串列然后檢查串列是否為空的情況下檢查游標是否為空?
uj5u.com熱心網友回復:
您可以簡單地打電話Cursor.Next()告訴是否還有更多檔案。如果您還沒有迭代任何內容,這將告訴您是否至少有一個結果檔案。
請注意,這將導致第一批結果被提取(但不會將任何結果檔案解碼為任何 Go 值)。
另請注意,如果發生錯誤或傳遞的過期Cursor.Next()將回傳。falsecontext.Context
例子:
var c *mongo.Collection // Acquire collection
curs, err := c.Find(ctx, bson.M{"your-query": "here"})
// handle error
hasResults := curs.Next(ctx)
if hasResults {
// There are result documents
}
// Don't forget to close the cursor!
雖然如果您打算解碼結果,您也可以呼叫Cursor.All()并檢查結果切片的長度:
curs, err := c.Find(ctx, bson.M{"your-query": "here"})
// handle error
var results []YourType
err := curs.All(ctx, &results)
// Handle error
if len(results) > 0 {
// There are results
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/526980.html
