Maison >développement back-end >Golang >Comment récupérer des éléments basés sur plusieurs valeurs d'attribut dans MongoDB à l'aide de Go ?
Récupérer la liste d'éléments en vérifiant plusieurs valeurs d'attribut dans MongoDB dans Go
Dans MongoDB, la récupération d'éléments basée sur plusieurs valeurs d'attribut peut être obtenue en utilisant le pipeline d’agrégation. Voici une implémentation Go utilisant le package mgo.v2 :
<code class="go">import ( "context" "fmt" "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" ) func RetrieveItemListByMultipleAttributeValues(databaseName, collectionName string, venueIDs []string) (map[string]int, error) { ctx := context.Background() // Create a new MongoDB connection. session, err := mgo.Dial("mongodb://host:port") if err != nil { return nil, fmt.Errorf("Error dialing MongoDB: %w", err) } defer session.Close() // Select the database and collection. collection := session.DB(databaseName).C(collectionName) // Define the aggregation pipeline. pipeline := []bson.M{ {"$match": bson.M{"venueList.id": bson.M{"$in": venueIDs}}}, {"$unwind": "$venueList"}, {"$match": bson.M{"venueList.id": bson.M{"$in": venueIDs}}}, {"$unwind": "$venueList.sum"}, {"$group": bson.M{ "_id": "$venueList.sum.name", "count": bson.M{"$sum": "$venueList.sum.value"}, }}, {"$group": bson.M{ "_id": nil, "counts": bson.M{ "$push": bson.M{ "name": "$_id", "count": "$count", }, }, }}, } // Run the aggregation pipeline. resultIterator, err := collection.Pipe(pipeline).Iter() if err != nil { return nil, fmt.Errorf("Error running aggregation pipeline: %w", err) } // Create a map to store the aggregated results. result := make(map[string]int) // Decode each result and add it to the map. for resultIterator.Next(&result) { for _, count := range result["counts"].([]interface{}) { result[count.(map[string]interface{})["name"].(string)] = count.(map[string]interface{})["count"].(int) } } // Close the result iterator. resultIterator.Close() // Return the result map. return result, nil }</code>
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!