Go Mongodb driver cookbook
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}}}