2016-04-23 15 views
2

Meine Dokumente enthalten 7 Felder, einer von ihnen ist "Stadt", Werte sind verschiedene Städte. Wenn ich es tueBegrenzen und rangieren Sie eine Gruppenanzahl in RethinkDB

r.db('base').table('table').group('city').count().run() 

RethinkDB gruppiert die Anzahl der Dokumente nach Städten. Die Ausgabe ist eine Liste von 277 Städten, von denen jede einer Anzahl von Dokumenten zugeordnet ist. Ich hätte gerne die gleiche Ausgabe, außer dass ich nur Städte sehen möchte, die mit 96 oder mehr Dokumenten verknüpft sind.

Wenn zum Beispiel die aktuelle Ausgabe der Abfrage ist

{(u'Newtown Square',): 2, (u'Delhi',): 242, (u'Emeryville',): 19, (u'Chicago',): 96}, 

ich die neue

{(u'Delhi',): 242, (u'Chicago',): 96} 

Wenn möglich geben möchten, würde ich auch wie das Ergebnis von eingestuft werden absteigende Reihenfolge.

Antwort

2

So etwas würde es tun: r.db('base').table('table').group('city').count().ungroup().filter(function(row) { return row('reduction').ge(96); }).orderBy(r.desc('reduction')).

+0

Thx für deine Antwort Lucy. Ihre Abfrage gibt einen Syntaxfehler zurück, und ich verstehe es nicht gut genug, um es zu ändern. – crocefisso

+0

In der RethinkDB-Dokumentation kann 'function' und' return' nicht gefunden werden. Was ist "Reduktion"? Für den Datensatz verwende ich Python-Client-Treiber. – crocefisso

+0

Ok, hab deinen Code java. Als ich in Python wechselte, funktionierte es wie ein Zauber. – crocefisso

0

Python-Client-Treiber Version:

r.db('base').table('table').group('city').count().ungroup().filter(lambda c: c['reduction'].ge(96)).order_by(r.desc('reduction')).run()