Maison >développement back-end >Golang >Comment interroger MongoDB depuis Go à l'aide d'un tableau d'ID d'objet ?

Comment interroger MongoDB depuis Go à l'aide d'un tableau d'ID d'objet ?

DDD
DDDoriginal
2024-10-29 20:06:02246parcourir

How to Query MongoDB from Go Using an Array of Object IDs?

Interroger MongoDB depuis Go à l'aide d'un tableau d'ID d'objet

Dans MongoDB, les identifiants des documents peuvent être stockés dans un tableau de chaînes ou d'objets Pièces d'identité. Lorsque vous utilisez le package mgo pour récupérer plusieurs documents en fonction de leurs ID d'objet stockés dans un tableau, il est important de vous assurer que la bonne approche est suivie.

Requête incorrecte

La requête fournie :

query := bson.M{"_id": bson.M{"$in": ids}}

n'est pas correcte pour les ID d'objet car ids est un tableau de chaînes. MongoDB attend des ID d'objet pour l'opérateur $in.

Requête correcte des ID d'objet

Pour interroger les ID d'objet stockés dans un tableau, convertissez les chaînes en ID d'objet avant construire la requête :

oids := make([]bson.ObjectId, len(ids))
for i := range ids {
  oids[i] = bson.ObjectIdHex(ids[i])
}
query := bson.M{"_id": bson.M{"$in": oids}}

La boucle for parcourt le tableau de chaînes, convertissant chacune d'elles en un ID d'objet à l'aide de bson.ObjectIdHex(string) et la stockant dans la tranche oids. La tranche oids résultante contiendra les ID d’objet. La requête est ensuite construite à l'aide de la tranche oids pour l'opérateur $in.

En utilisant la requête correcte pour les ID d'objet, vous pouvez récupérer efficacement plusieurs documents avec des ID correspondants à partir de MongoDB en utilisant Go et le package mgo.

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!

Déclaration:
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