sql >> Databasteknik >  >> NoSQL >> MongoDB

Konvertera mongo-array till objekt med nyckel-värde-par

Inte så säker på vad du vill göra med slutresultatet eftersom nycklarna och värdena är precis desamma. Icke desto mindre kan du använda aggregeringsramverket där du kan avnormalisera den inbäddade värdematrisen genom att använda $unwind operator som plattar ut det, dvs den producerar en kopia av varje dokument per arraypost.

Efter att ha plattat ut värdematrisen kan du använda $group ackumuleringsoperatörer på värdena för att aggregera dem. En sista pipeline av $project operatorn skulle forma fälten från den tidigare grupperingen till önskat format.

Följ det här exemplet för att 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
        }
    }
])

Eftersom du använder Meteor lägger meteor till meteorhacks:aggregate kommer att lägga till korrekt aggregeringsstöd för Meteor så att du kan köra ovanstående aggregeringspipeline på din samling.



  1. Mongodb - $grupp i en $grupp (med 'nyckel')

  2. Effektiv paginering av MongoDB-aggregation?

  3. Konfigurera Redis Session State på Azure

  4. Lyssna efter ändringar i Redis?