sql >> Database teknologi >  >> NoSQL >> MongoDB

Konvertering af mongo-array til objekt med nøgleværdi-par

Ikke så sikker på, hvad du vil gøre med slutresultatet, da nøglerne og værdierne er de samme. Ikke desto mindre kan du bruge aggregeringsrammen, hvor du kan denormalisere det indlejrede værdiarray ved at bruge $unwind operatør, som flader det ud, dvs. det producerer en kopi af hvert dokument pr. matrixindgang.

Efter at have udjævnet værdimatrixen, kan du anvende $group akkumuleringsoperatører på værdierne for at aggregere dem. En sidste pipeline af $project operatør ville forme felterne fra den forrige gruppering til det ønskede format.

Følg dette eksempel for at få konceptet:

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 du bruger Meteor, skal du tilføje meteorhacks:aggregate vil tilføje korrekt aggregeringsunderstøttelse til Meteor, så du kan køre ovenstående aggregeringspipeline på din samling.



  1. 3 måder at konvertere en dato til en streng i MongoDB

  2. hvordan beregnes gennemsnit, median, min, max i mongodb-forespørgsel?

  3. Mongo:hvordan man sorterer efter ekstern vægt

  4. Er der en måde at vise tidsstempel i unix-format til ISODate?