Go Mongodb driver cookbook

Pubblicato il 12/01/2022

Poche settimane fa ho riscritto il backend di un’applicazione da Node.js a Go. L’applicazione utilizza MongoDB come database e ho utilizzato il driver ufficiale Go per la comunicazione.

L’idea di questo articolo è mostrare qualche esempio per gestire operazioni comuni non ben descritte in documentazione.

La struttura dati usata come documento nei seguenti esempi

type doc struct {
    Id   primitive.ObjectID `bson:"_id,omitempty"`
    Name string             `bson:"name"`
}

Recupero dell’ObjectId di un documento appena inserito

import "go.mongodb.org/mongo-driver/bson/primitive"

...
...

res, err := db.Collection("myCollection").InsertOne(ctx.Background(), doc)
objectId := res.InsertedID.(primitive.ObjectID)

Conversione ObjectId da/a stringa

import "go.mongodb.org/mongo-driver/bson/primitive"


objectId, err := primitive.ObjectIDFromHex(idAsString) // da stringa ad ObjectId

objectIdToString := fieldname.Hex() // da ObjectId a stringa

Ordina per

import "go.mongodb.org/mongo-driver/bson"

options := options.Find().SetSort(bson.D{{"name", -1}}) // 1 ASC, -1 DESC
cursor, err := mydocs.Find(ctx.Background(), bson.D{}, options)

Usare l’operatore $regex


pattern := primitive.Regex{Pattern: "pattern", Options: "i"} // pattern case-insensitive
whereClause := bson.D{{"name", bson.M{"$regex": pattern}}}
  • I contenuti di questo articolo sono rilasciati con licenza CC-BY 4.0
  • Eventuali spezzoni di codice presentati seguono, dove non dichiarato, licenza MIT