我使用$我在我的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