我需要檢查一個集合是否存在。我創建了以下功能:func ExitsCollection(name string) bool { var exists bool = false names, err := cliente.CollectionNames() if err != nil { log.Println("[-]I cannot retrieve the list of collections") } // Simply search in the names for _, name := range names { if name == name { log.Printf("[+]The collection already exists!") exists = true break } } if !exists { log.Println("[+] The collection does not exist") } return exists}為了連接,我使用下一個功能:func ConectaBD() { cliente_local, err := mongo.NewClient(options.Client().ApplyURI(cadena_conexion)) if err != nil { log.Fatal(err) } ctx, cancelar = context.WithTimeout(context.Background(), 10*time.Second) err = cliente_local.Connect(ctx) if err != nil { log.Fatal(err) } defer cancelar() mongo_cliente = cliente_local.Database(DATABASE) log.Println("[+]Connected to MongoDB Atlas")}我使用以下變量:var cliente_local *mongo.Clientvar mongo_cliente *mongo.Databasevar coleccion *mongo.Collectionvar ctx context.Contextvar cancelar context.CancelFunc問題是下一句話:名稱,錯誤:= cliente.CollectionNames()什么類型的數據或如何使用方法 CollectionNames()?有人有示例源代碼嗎?
1 回答

慕蓋茨4494581
TA貢獻1850條經驗 獲得超11個贊
Database.CollectionNames()返回 db 數據庫中存在的集合名稱。返回類型是slice這樣,您需要檢查您的收藏是否已列出。
請查看官方文檔:https ://pkg.go.dev/gopkg.in/mgo.v2#Database.CollectionNames
sess := ... // obtain session
db := sess.DB("") // Get db, use db name if not given in connection url
names, err := db.CollectionNames()
if err != nil {
// Handle error
log.Printf("Failed to get coll names: %v", err)
return
}
// Simply search in the names slice, e.g.
for _, name := range names {
if name == "collectionToCheck" {
log.Printf("The collection exists!")
break
}
}
- 1 回答
- 0 關注
- 228 瀏覽
添加回答
舉報
0/150
提交
取消