Konvertieren von mongo-array-Objekt mit Schlüssel-Wert-paar

Habe ich ein mongo-Dokument enthält ein array von Strings, und ich brauche, um zu konvertieren, das insbesondere array von strings in ein array-Objekt mit den Schlüssel-Wert-paar. Unten ist meine aktuelle Programm zu.

{
    "_id" : ObjectId("57e3720836e36f63695a2ef2"),
    "platform" : "A1",
    "available" : {
        "Community" : {
            "attributes" : {
                "type" : {
                    "values" : [
                        "well-known",
                        "simple",
                        "complex"
                    ],
                    "defaultValue" : "well-known"
                },
[......]


}

Aktuellen Abfrage:

templateAttributes.find({platform:"V1"}).map(function(c){
  //instantiate a new array
  var optionsArray = [];
for (var i=0;i< c['available']['Community']['attributes']['type']['values'].length; i++){
    optionsArray[i] = {};              //creates a new object
    optionsArray[i].label = c['available']['Community']['attributes']['type']['values'][i];
    optionsArray[i].value = c['available']['Community']['attributes']['type']['values'][i];
    }
    return optionsArray;
})[0];

Ergebnis:

[{label:"well-known", value:"well-known"},
{label:"simple", value:"simple"},
{label:"complex", value:"complex"}]

Ist mein Ansatz, der effizient genug ist, oder gibt es eine Möglichkeit, optimieren Sie die Abfrage, um das gleiche gewünschte Ergebnis?

  • Keine spezifischen Gründe, dies zu tun auf mongodb Seite ?
  • Nein. Es gibt keinen bestimmten Grund, warum es getan werden muss, um auf die mongo-Seite. Da bin ich mit diesem Meteor, der diese Abfrage ausgeführt wird, im Speicher (mini-mongo).
  • Ok. Dann Aggregat ist die Lösung. Nur Bedenken Sie, dass $unwind wird multiplizieren Sie das Ergebnis set-Größe array.Länge Zeiten. So verwenden Sie ein $project vor, nur halten Sie die erforderlichen Felder, vielleicht auch nur "Werte".
InformationsquelleAutor blueren | 2016-09-23
Schreibe einen Kommentar