Dapatkan Senarai Item dengan Menyemak Berbilang Nilai Atribut dalam MongoDB dalam Go
Dalam MongoDB, mendapatkan semula item berdasarkan berbilang nilai atribut boleh dicapai menggunakan saluran paip pengagregatan. Berikut ialah pelaksanaan Go menggunakan pakej 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>
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Item Berdasarkan Berbilang Nilai Atribut dalam MongoDB Menggunakan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!