I bin mit und $ limit für AJAX Paginierung in meiner Django app in meiner Aggregationsanfragen $ überspringen. Hier ist ein Beispiel von meinem Code:
art_cursor = Articles.objects.aggregate({'match': {'ntype': {'$in': [1,6]}}},
{'$group': {'_id': {'title': '$title'}}},
{'$sort': {'_id.title': -1}},
{'$limit': 51 * page}, {'$skip': 51 * (page-1)},
allowDiskUse=True)
So habe ich einige sortierte Artikel bündeln und wollen einen einzigartigen Teil von ihnen für jede Seite zu bekommen, wenn der Benutzer nach unten scrollt.
Aber einige der Artikel werden auf verschiedenen Seiten wiederholt, das heißt, wenn ich obigen Code in Bereich (1,6) Schleife (für alle Artikel von 1 bis 5 Seiten), dann einige Artikel in Ergebnis-Array wird wiederholt.
Welche Workaround könnte dafür getan werden, oder vielleicht eine andere Möglichkeit, ich kann so etwas tun?
UPD1 btw, wenn ich $ sort Betrieb entfernen - es gibt keine Duplikate in Folge Array. Ich habe keine Ahnung, warum
Können Sie einige Daten und die Ergebnisse zeigen, die dupliziert werden? $ in: [1,6] gibt Werte von 1 oder 6 und nicht von 1 bis 6 zurück. Es scheint mir, dass Sie doppelte Daten in Ihren Daten haben, aber mit etwas anderen Titeln. – Tiramisu
@Tiramisu dies [1,6] bedeutet nichts über dieses Problem - ich finde nur Artikel, die 1 oder 6 Typ entspricht. Die Duplikate betreffen Objekte in meinem Fall. – vadimb
Auch auf DBA veröffentlicht: http://dba.stackexchange.com/questions/143399/mongodb-avoid-sort-limit-optimization. Wie bereits erwähnt, bestimmt die '$ group'-Stufe die Eindeutigkeit .. und es sieht so aus, als wären die Stufen '$ limit' und '$ skip' umgekehrt. Einige Beispieldaten zur Veranschaulichung des Problems wären hilfreich. – Stennie