2016-04-01 9 views
0

Ich habe eine Tabelle "Beiträge" mit "timestamp".Rethinkdb Filter auf eine frühere Abfrage

Jetzt möchte ich von allen Benutzern, die mehr als 1 Beitrag haben, um alle Beiträge zu erhalten, mit Ausnahme der letzten Post.

Mit dieser Abfrage kann ich erfolgreich die Benutzer überprüfen, die mehr als 1 Beitrag haben:

Ich kann den letzten Beitrag von einem bestimmten Benutzer erhalten, indem

r.table("post") 
.filter({userId: 'xxx'}) 
.max('timestamp') 
tun

Jetzt muss ich binden Sie diese irgendwie zusammen und vergleichen Sie dann den Zeitstempel von jeder Reihe mit dem Maximum ("timestamp"), um zu sehen, wenn sie nicht gleich sind. Im Folgenden ist das, was ich hatte, aber es ist offensichtlich falsch

.filter(r.row('timestamp').ne(r.row('timestamp').max('timestamp')('timestamp'))) 

Ratschläge, wie ich das alles zusammen zu bringen?

Antwort

1

So etwas wie dies funktionieren sollte:

r.table('post') 
.group({ 
    index: 'userId' 
}) 
.ungroup() 
.filter(function(doc) { 
    return doc('reduction').count().gt(1) 
}) 
.group('group')('reduction') 
.nth(0) 
.orderBy(
    r.desc('timestamp') 
).skip(1) 

Mit Reservierungen für Syntaxfehler; Ich habe diese Abfrage mit Python erstellt und dann in Javascript konvertiert. Besonders unsicher über die .nth(0) Teil, nie in Javascript verwendet. In Python ist es nur [0].