我使用$我在我的Django應用程序AJAX分頁聚集查詢跳過和$限制。下面是我的代碼示例:
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)
所以我有一些分類的物品集中,並希望得到他們的唯一部分爲每個頁面,當用戶向下滾動。
但是有些文章在不同的頁面上重複,這意味着如果我將範圍(1,6)循環(用於獲取所有文章從1頁到5頁)的上述代碼,那麼一些文章結果數組將被重複。
可以爲它做什麼解決方法,或者我可以做另一種方法做這樣的事情?
UPD1 順便說一句,如果我刪除$排序操作 - 有在結果數組沒有重複。我不知道爲什麼
你能展示一些數據和被複制的結果? $ in:[1,6]將返回1或6,而不是1到6的值。在我看來,您可能在數據中有重複,但標題略有不同。 – Tiramisu
@Tiramisu這個[1,6]對這個問題沒有任何意義 - 我只是找到匹配1或6類型的文章。重複項是關於我的情況下的對象。 – vadimb
也發佈在DBA上:http://dba.stackexchange.com/questions/143399/mongodb-avoid-sort-limit-optimization。如上所述,'$ group'階段決定了唯一性,它看起來像$ limit和$ skip階段是相反的。一些示例數據來說明問題會有所幫助。 – Stennie