2010-03-12 6 views
6

Kann ich das Ergebnis einer Ansicht um den Wert bestellen, zurückgegeben von reduziert?Wie ergibt sich eine Ansicht durch reduzierten Wert? CouchDB

{ 
    "rows": [ 
     {"key":"bob","value":2}, 
     {"key":"john","value":3}, 
     {"key":"zztop","value":1} 
    ] 
} 

Ich möchte ein Ergebnis wie folgt aus:

{ 
    "rows": [ 
     {"key":"zztop","value":1}, 
     {"key":"bob","value":2}, 
     {"key":"john","value":3} 

    ] 
} 
+0

Machst du das in PHP oder JS !? –

+0

Ich mache Ruby on Rails mit CouchRest gem. Aber der JSON ist größer als dieses einfache Beispiel. –

+1

zeigen Sie, wie Ihre Map-Funktion aussieht –

Antwort

0

Sie nur die rows Array von der value Eigenschaft jedes Objekts sortieren möchten? Sie können eine benutzerdefinierte Vergleichsmethode für die Methode js sort angeben.

myResult.rows.sort(function (a, b) { 
    return parseInt(a.value,10) - parseInt(b.value,10); 
}); 

Parameter a und b werden jeweils ein Eintrag aus dem rows Array sein. Die Methode gibt einen int-Wert größer als 0, 0 oder kleiner als Null zurück. größer als 0 bedeutet a sollte vor b bestellt werden, das Gegenteil für weniger als 0, und 0 bedeutet, dass sie gleich sind.

+0

Die Frage ist, wie man das auf CouchDB macht. Natürlich können wir die Ergebnisse nach dem Abrufen manuell sortieren. Was aber, wenn mehr Ergebnisse zurückgegeben werden, als beispielsweise im Speicher gespeichert werden können? – lovasoa

Verwandte Themen