sql >> Database >  >> NoSQL >> MongoDB

Mongo-array converteren naar object met sleutel-waardepaar

Niet zo zeker wat u met het eindresultaat wilt doen, aangezien de sleutels en de waarden precies hetzelfde zijn. Desalniettemin kunt u het aggregatieraamwerk gebruiken waar u de matrix met ingesloten waarden kunt denormaliseren met behulp van de $unwind operator die het vlak maakt, d.w.z. het produceert een kopie van elk document per array-invoer.

Nadat u de array met waarden heeft afgevlakt, kunt u de $group accumulatieoperatoren op de waarden om ze te aggregeren. Een laatste pijplijn van de $project operator zou de velden van de vorige groepering in het gewenste formaat vormgeven.

Volg dit voorbeeld om het concept te begrijpen:

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
        }
    }
])

Aangezien je Meteor gebruikt, voegt meteor meteorhacks:aggregate toe zal de juiste aggregatieondersteuning voor Meteor toevoegen, zodat u de bovenstaande aggregatiepijplijn op uw verzameling kunt uitvoeren.



  1. Hoe kan ik de momenteel geverifieerde gebruiker-principal krijgen met lentebeveiliging en Redis in de lente-opstarttoepassing?

  2. Bepaal in een mongodb-groep / kaartopdracht het percentage van het totaal van de groep

  3. brew install php56-mongo Commando Werkt niet

  4. mongodb $match-bewerking in $lookup om te vergelijken objectId werkt niet zoals verwacht