Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann man mit Go bestimmte Attribute über mehrere Veranstaltungsorte hinweg in MongoDB effizient zählen?

Wie kann man mit Go bestimmte Attribute über mehrere Veranstaltungsorte hinweg in MongoDB effizient zählen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-25 21:57:03462Durchsuche

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

Artikelliste durch Überprüfen mehrerer Attributwerte in MongoDB in Go abrufen

Problem:

Wie können Sie bei einer JSON-Datenstruktur mit einer verschachtelten Liste von Veranstaltungsorten und deren Attributen die Anzahl spezifischer Attribute (z. B. Linux-Benutzer) für mehrere Veranstaltungsorte abrufen? Sie möchten beispielsweise die Anzahl der Linux-Benutzer für Veranstaltungsorte mit den IDs „VID1212“ und „VID4343“ zählen.

Lösung:

Um dies in MongoDB zu erreichen, Sie können das Aggregationsframework verwenden:

  1. $match: Filtern Sie Dokumente basierend auf den angegebenen Veranstaltungsort-IDs mit dem $in-Operator.
  2. $unwind : Reduzieren Sie die verschachtelten VenueList- und Sum-Arrays, um die Daten zu denormalisieren.
  3. $match (zweite Anwendung): Filtern Sie die abgewickelten Dokumente erneut, um nur die gewünschten Veranstaltungsort-IDs zu berücksichtigen.
  4. $unwind (zweite Anwendung): Unterdokumente mit verschachtelten Summen weiter abwickeln.
  5. $group:** Gruppieren Sie die Dokumente basierend auf dem Feld **Name** des Summenunterdokuments und aggregieren Sie das Feld **Wert** mit dem Akkumulator **$sum.
  6. $cond: Verwenden Sie einen bedingten Ausdruck, um für jedes separate Zählfelder zu erstellen gewünschtes Attribut (z. B. Linux, Ubuntu).

Für eine flexiblere Alternative:

  1. Ersetzen Sie die letzte Aggregationsstufe durch:

    { 
     "$group": {
         "_id": null,
         "counts": {
             "$push": {
                 "name": "$_id",
                 "count": "$count"
             }
         }
     }
    }

Diese Alternative gruppiert basierend auf dem Attributnamen und verschiebt die entsprechende Anzahl in ein Array.

Informationen zur Implementierung in Golang mit mGo (v2) finden Sie in der Anleitung unter http:/ /godoc.org/labix.org/v2/mgo#Collection.Pipe.

Das obige ist der detaillierte Inhalt vonWie kann man mit Go bestimmte Attribute über mehrere Veranstaltungsorte hinweg in MongoDB effizient zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn