Maison >développement back-end >Golang >Comment projeter efficacement des champs dans des documents MongoDB à l'aide du pilote mongo-go-driver ?
Champs de projet dans les documents MongoDB avec le pilote mongo-go-driver officiel
Le filtrage des champs dans les documents MongoDB est crucial pour la récupération sélective des données et l'optimisation des performances . Pour y parvenir, le pilote mongo-go-driver officiel propose des options flexibles.
Énoncé du problème :
Tentatives d'utilisation de la méthode findopt.Projection pour supprimer un champ dans un Le document MongoDB échoue. Malgré la spécification d'une projection à l'aide de la structure des champs, le champ reste intact dans le document renvoyé.
Solution :
Cause fondamentale : la structure des champs utilisée pour la projection ne peut pas accéder à ses champs en raison de noms de champs non exportés.
Remède : exportez le nom du champ de la structure et utilisez les balises struct pour le mapper au MongoDB correspondant champ (_id dans ce cas).
Voici le code modifié :
type fields struct { ID int `bson:"_id"` } s := bson.NewDocument() filter := bson.NewDocument(bson.EC.ObjectID("_id", starterId)) projection := fields{ ID: 0, } result := staCon.collection.FindOne( nil, filter, options.FindOne().SetProjection(projection)).Decode(s)
Alternativement, vous pouvez utiliser un bson.Document comme projection :
projection := bson.NewDocument( bson.EC.Int32("_id", 0), ) result := staCon.collection.FindOne( nil, filter, options.FindOne().SetProjection(projection)).Decode(s)
En implémentant ces modifications, le filtrage des champs souhaité sera obtenu, ce qui entraînera un document avec le champ _id supprimé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!