Maison > développement back-end > Golang > le corps du texte

Comment compter efficacement des attributs spécifiques sur plusieurs sites dans MongoDB à l'aide de Go ?

Mary-Kate Olsen
Libérer: 2024-10-25 21:57:03
original
472 Les gens l'ont consulté

How to Efficiently Count Specific Attributes Across Multiple Venues in MongoDB using Go?

Récupérer la liste des éléments en vérifiant plusieurs valeurs d'attribut dans MongoDB dans Go

Problème :

Étant donné une structure de données JSON avec une liste imbriquée de sites et de leurs attributs, comment récupérer le nombre d'attributs spécifiques (par exemple, les utilisateurs Linux) pour plusieurs sites ? Par exemple, vous souhaitez compter le nombre d'utilisateurs Linux pour les sites avec les identifiants « VID1212 » et « VID4343 ».

Solution :

Pour y parvenir dans MongoDB, vous pouvez utiliser le cadre d'agrégation :

  1. $match : Filtrer les documents en fonction des identifiants de lieu spécifiés à l'aide de l'opérateur $in.
  2. $unwind : Aplatissez la liste de lieux imbriquée et additionnez les tableaux pour dénormaliser les données.
  3. $match (deuxième application) : Filtrez à nouveau les documents déroulés pour ne prendre en compte que les identifiants de lieu souhaités.
  4. $unwind (deuxième application) : Continuez à dérouler les sous-documents de somme imbriqués.
  5. $group :** Regroupez les documents en fonction du champ **nom** du sous-document de somme et agrégez le champ **value** à l'aide de l'accumulateur **$sum.
  6. $cond : Utilisez une expression conditionnelle pour créer des champs de comptage distincts pour chacun attribut souhaité (par exemple, Linux, Ubuntu).

Pour une alternative plus flexible :

  1. Remplacez la dernière étape d'agrégation par :

    { 
     "$group": {
         "_id": null,
         "counts": {
             "$push": {
                 "name": "$_id",
                 "count": "$count"
             }
         }
     }
    }
    Copier après la connexion

Cette alternative regroupe en fonction du nom de l'attribut et pousse le nombre correspondant dans un tableau.

Pour l'implémentation dans Golang à l'aide de mGo (v2), reportez-vous aux instructions sur http:/ /godoc.org/labix.org/v2/mgo#Collection.Pipe.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!