MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Konvertieren des Mongo-Arrays in ein Objekt mit Schlüssel-Wert-Paar

Sie sind sich nicht sicher, was Sie mit dem Endergebnis machen möchten, da die Schlüssel und die Werte genau gleich sind. Nichtsdestotrotz können Sie das Aggregations-Framework verwenden, in dem Sie das Array eingebetteter Werte denormalisieren können, indem Sie $unwind -Operator, der es reduziert, d. h. es wird eine Kopie jedes Dokuments pro Array-Eintrag erstellt.

Nach dem Reduzieren des Werte-Arrays können Sie den $group Akkumulationsoperatoren auf die Werte, um sie zu aggregieren. Eine letzte Pipeline des $project Operator würde die Felder aus der vorherigen Gruppierung in das gewünschte Format bringen.

Folgen Sie diesem Beispiel, um das Konzept zu erhalten:

templateAttributes.aggregate([
    { "$match": { "platform": "V1" } },
    { "$unwind": "$available.Community.attributes.type.values" },
    {
        "$group": {
            "_id": "$available.Community.attributes.type.values",
            "value": { "$first": "$available.Community.attributes.type.values" }
        }
    },
    {
        "$project": {
            "_id": 0,
            "label": "$_id",
            "value": 1
        }
    }
])

Da Sie Meteor verwenden, fügen Sie meteor meteorhacks:aggregate hinzu wird die richtige Aggregationsunterstützung für Meteor hinzufügen, sodass Sie die obige Aggregationspipeline für Ihre Sammlung ausführen können.