2016-11-07 1 views
0

Ich habe Beiträge mit Feldern wie Benutzername (Autor des Beitrags) und Zeitstempel (Zeit hochgeladen). Ich bemühe mich, eine Ansicht zu erstellen, die, wenn sie abgefragt wird, Beiträge von einem bestimmten Benutzer in absteigender Reihenfolge des Zeitstempels ergreift.CouchDb Beiträge von einem Benutzer in absteigender Zeitfolge sortieren

map: function(doc) { 
    if (doc.type == 'post'){ 
     emit(doc.username, [doc._id, doc.timestamp]); 
    }; 
}, 

Ich kann von einem bestimmten Benutzer verfasst abfragen Dokumente aber wie kann ich anwenden absteigend = true nur auf dem Zeitstempel-Feld?

Antwort

1

Mit CouchDB Ansichten, kann nur die Taste die Sortierreihenfolge für den Index bestimmen. Der Wert berücksichtigt keine Sortierung/Gruppierung.

Wenn Sie also eine Ansicht haben möchten, die Posts von einem Benutzer in der Reihenfolge der Erstellung (aufsteigend oder absteigend) ausgibt, geben Sie ein Array als eine Art "zusammengesetzten Schlüssel" aus. Ich würde empfehlen, die Guide to Views in der CouchDB Dokumentation zu lesen.

Für Ihr Beispiel würde ich eine Karte Funktion wie folgt machen:

function (doc) { 
    if (doc.type === 'post') { 
    emit([ doc.username, doc.timestamp ]); 
    } 
} 

Dann Sie die Beiträge für einen bestimmten Benutzer mit einer Abfrage wie bekommen:

?start_key=["username"]&end_key=["username","\ufff0"] 

Welche finden die Posts für den angegebenen "Benutzernamen", geordnet nach dem Zeitstempel aufsteigend. Um die Reihenfolge umzukehren, verwenden Sie die folgende Abfrage statt:

?start_key=["username","\ufff0"]&end_key=["username"]&descending=true 

Beachten Sie, dass die Werte für start_key und end_key vertauscht, und descending=true wurde hinzugefügt.

Wie bereits erwähnt, lesen Sie sich die Dokumentation durch, da dies eine hervorragende Möglichkeit ist, den besten Überblick über CouchDB-Ansichten zu erhalten.

Verwandte Themen