Récupérer la liste des éléments en vérifiant plusieurs valeurs d'attribut dans MongoDB
Lorsque vous travaillez avec MongoDB, il devient souvent nécessaire de récupérer des éléments spécifiques en fonction de plusieurs valeurs d'attribut, similaires à la condition IN utilisée dans MySQL. Cet article montre comment y parvenir en utilisant une combinaison d'opérations de pipeline dans MongoDB.
Cadre d'agrégation
Dans ce scénario, nous utiliserons le cadre d'agrégation pour construire un pipeline qui filtre et regroupe les données d'une collection MongoDB connue sous le nom de « venueList ». L'objectif est de récupérer le nombre total d'utilisateurs avec des systèmes d'exploitation spécifiques, tels que Linux ou Ubuntu, sur la base d'une liste d'identifiants de sites.
Étapes du pipeline
Le Le pipeline se compose de plusieurs étapes qui fonctionnent ensemble pour transformer et résumer les données :
Sortie attendue
La sortie finale du pipeline d'agrégation sera un document contenant le nombre total d'utilisateurs Linux et Ubuntu pour les ID de site spécifiés :
<code class="json">{ "_id": null, "linux": 14, "ubuntu": 4 }</code>
Implémentation Go
Pour utiliser ce pipeline dans Go à l'aide du package mgo , vous pouvez suivre ces étapes :
<code class="go">query := []bson.M{ {"$match": bson.M{"venueList.id": bson.M{"$in": []string{"VID1212", "VID4343"}}}}, {"$unwind": "$venueList"}, {"$match": bson.M{"venueList.id": bson.M{"$in": []string{"VID1212", "VID4343"}}}}, {"$unwind": "$venueList.sum"}, { "$group": bson.M{ "_id": nil, "linux": bson.M{"$sum": bson.M{"$cond": []interface{}{bson.M{"$eq": []interface{}{"$venueList.sum.name", "linux"}}, "$venueList.sum.value", 0}}}, "ubuntu": bson.M{"$sum": bson.M{"$cond": []interface{}{bson.M{"$eq": []interface{}{"$venueList.sum.name", "ubuntu"}}, "$venueList.sum.value", 0}}}, }, }, }</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!