Maison >développement back-end >Golang >Comment interroger des collections MongoDB non structurées dans Go avec mgo ?

Comment interroger des collections MongoDB non structurées dans Go avec mgo ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-26 08:44:14566parcourir

How to Query Unstructured MongoDB Collections in Go with mgo?

Gestion des collections MongoDB non structurées dans Go avec mgo

Lors de l'interrogation d'une collection dans MongoDB avec mgo, il est possible de prédéfinir les données qui seront être renvoyé dans une structure, comme démontré avec l'exemple de structure Person fourni. Cependant, il peut y avoir des scénarios dans lesquels les documents de la collection ont un ensemble de clés variable.

Comment gérer les collections non structurées dans Go / mgo

Il existe plusieurs façons pour gérer les collections non structurées dans Go/mgo :

Utiliser un map :

En utilisant un type bson.M, qui est une map[string]interface{}, vous pouvez stocker les données du document directement sans définir de structure spécifique.

var m bson.M
err := collection.Find(nil).One(&m)
check(err)
for key, value := range m {
    fmt.Println(key, value)
}

Utilisation d'une tranche de document :

bson.D est un type de tranche qui préserve l'ordre des clés et fournit un mécanisme efficace pour la gestion des documents.

var d bson.D
err := collection.Find(nil).One(&d)
check(err)
for i, elem := range d {
    fmt.Println(elem.Name, elem.Value)
}

Utilisation d'un champ de carte en ligne :

En utilisant l'indicateur bson en ligne dans un champ de carte dans une structure, vous pouvez combiner le commodité d'utiliser une structure avec la flexibilité de gérer des champs inconnus.

type Person struct {
    ID        bson.ObjectId `bson:"_id,omitempty"`
    Name      string
    Phone     string
    Extra     bson.M `bson:",inline"`
}

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