2016-10-21 7 views
0

Ich versuche, ein Feld jedes Objekts in meiner Sammlung in Form von Array mit MapReduce-Funktion zurückzugeben. Dies sind meine Dokumente in einer Sammlung.MapReduce-Funktion MongoDB NodeJs

{ _id: '1', name: 'a' }, 
{ _id: '2', name: 'b' }, 
{ _id: '4', name: 'c' }, 
{ _id: '5', name: 'd' }, 
{ _id: '6', name: 'e' }, 
{ _id: '7', name: 'f' } 

Jetzt mag ich in dieser Form zur Folge hat [ 'a', 'b', 'c', 'd', 'e', ​​'f']. Wie ich es erreichen kann, habe ich versucht mapReduce, aber konnte das Ergebnis auf diese Weise nicht erhalten.

Dies ist mein Code

collection.mapReduce(function EachBranch() { 
     emit(this.name, this.value); 
     }, function (key, values) { 
     },{ out: { inline: 1 } }); 

Antwort

1

Sie werden über Werte in Minderer laufen müssen und Transformationsergebnis in gewünschter Form.

Beispiel: in Mongo Versuchen Shell

db.collection.mapReduce(
    function() { 
    emit(1, this.name) 
    }, 
    function(k,v){ 
    var result = {}; 
    result.names = v; 
    return result; 
    }, 
    {out: {inline:1}} 
).results[0].value.names; 

Basierend auf Ihrer Probe Eingabedokumente, werden Sie Ausgabe als erhalten:

[ "a", "b", "c", "d", "e", "f" ] 

aktualisieren: Node.js Lösung:

Hinweis: Ich behandle keinen Fehler, also bitte defensive Codierung.

+0

Ich bekomme "Kann Eigenschaft '0' von undefined nicht lesen" –

+0

Siehe meine ** HINWEIS ** oben. Ich habe klar gesagt, dass ich keine Fehlerüberprüfung mache. Wenn es kein Ergebnis gibt, erhalten Sie einen Fehler. Ich überlasse Ihnen die Fehlerbehandlung. Bitte beachten Sie, dass SO kein Kodierungsdienst ist. Wir sind hier, um zu helfen, aber nicht, Aufgaben zu lösen oder Arbeit zu erledigen. – Saleem

+0

Ich verstehe, das Problem ist in Ihrem Code die Ergebnisse sind undefined –