如何在Golang中使用MongoDB获取会话

huangapple go评论89阅读模式
英文:

how i get a session in mongodb with golang

问题

我需要使用方法**CollectionNames()**来列出数据库中的所有集合。

我将需要在mongoDB中创建一个session

sess := ... // 获取session
db := sess.DB("") // 获取db,如果连接URL中没有给出db名称,则使用db名称

names, err := db.CollectionNames()

我在哪里可以找到一个获取MongoDB session的示例?

我一直以以下方式连接到数据库:

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)

如何创建一个session?

提前感谢!

英文:

I need to use the method CollectionNames() in order to list all the collections of a database.

I will have to create a session in mongoDB:

sess := ... // obtain session
db := sess.DB("") // Get db, use db name if not given in connection url

names, err := db.CollectionNames()

Where could I find a example to get a session in MongoDB?

I have always connected with the DB of the next way:

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)

How could I create a session?

Thanks in advance!!

答案1

得分: 2

你似乎混淆了不同的MongoDB驱动程序。DB.CollectionNames()存在于旧且未维护的mgo驱动程序中。

你使用的是官方的mongo-go驱动程序,它有一种不同的方法来获取现有集合的列表。

mongo-go驱动程序有Database.ListCollectionNames()方法,你可以像这样使用它:

names, err := mongo_cliente.ListCollectionNames(ctx, bson.D{})
// names是一个包含所有现有集合名称的[]string
英文:

You seem to be confusing / mixing different MongoDB drivers. The DB.CollectionNames() exists in the mgo driver which is old and unmaintained.

The driver you use is the official mongo-go driver, which has a different method for obtaining the list of existing collections.

The mongo-go driver has the Database.ListCollectionNames() method, you may use it like this:

names, err := mongo_cliente.ListCollectionNames(ctx, bson.D{})
// names is a []string holding all the existing collection names

huangapple
  • 本文由 发表于 2021年12月28日 18:11:22
  • 转载请务必保留本文链接:https://go.coder-hub.com/70505598.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定