Maison > développement back-end > Golang > Comment récupérer des documents MongoDB à l'aide d'un tableau d'ID d'objet à l'aide de mgo et bson ?

Comment récupérer des documents MongoDB à l'aide d'un tableau d'ID d'objet à l'aide de mgo et bson ?

Barbara Streisand
Libérer: 2024-10-30 06:35:27
original
766 Les gens l'ont consulté

How to Retrieve MongoDB Documents by an Array of Object IDs using mgo and bson?

Récupération de documents MongoDB par tableau d'ID d'objet

Dans MongoDB, il est possible de stocker un tableau d'ID d'objet (également appelés _ids) au sein d'un document. Pour récupérer efficacement tous les documents correspondant à ces ID d'objet, utilisez l'opérateur $in.

Question :

Vous disposez d'un tableau d'_ids codés en hexadécimal :

ids := ["543d171c5b2c12420dd016", "543d171c5b2dd016"]
Copier après la connexion

Comment récupérer les documents correspondants en utilisant mgo et bson ?

Réponse :

Votre approche initiale en utilisant :

query := bson.M{"_id": bson.M{"$in": ids}}
c.Find(query).All()
Copier après la connexion

est incorrect car les _ids sont stockés sous forme d'ID d'objet, pas de chaînes. Pour récupérer des documents par ID d'objet, vous devez convertir les chaînes codées en hexadécimal en objets bson.ObjectId :

oids := make([]bson.ObjectId, len(ids))
for i := range ids {
  oids[i] = bson.ObjectIdHex(ids[i])
}

query := bson.M{"_id": bson.M{"$in": oids}}
c.Find(query).All()
Copier après la connexion

Ce code :

  1. Crée une tranche de bson.ObjectId objets.
  2. Parcourt les chaînes _id codées en hexadécimal, en les convertissant chacune en un ID d'objet à l'aide de la fonction bson.ObjectIdHex.
  3. Construit une requête dans laquelle le champ _id correspond à l'un des ID d'objet fournis. .
  4. Utilise les méthodes Find et All pour récupérer tous les documents correspondants de la collection MongoDB.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal