繁体   English   中英

MongoDB $skip + $limit 在查找结果中重复

[英]MongoDB $skip + $limit duplicates in find results

我在 Django 应用程序的 AJAX 分页聚合查询中使用了$skip$limit 这是我的代码示例:

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)

所以我有一些排序的文章池,并希望在用户向下滚动时为每个页面获取它们的唯一部分。

但是有些文章在不同的页面上重复,这意味着如果我将上面的代码放在range(1,6)循环中(用于获取从 1 到 5 页的所有文章),那么结果数组中的一些文章将被重复。

可以为它完成哪种解决方法,或者我可以用另一种方式做这样的事情?

UPD1顺便说一句,如果我删除$sort操作 - 结果数组中没有重复项。 我不知道为什么

好的,问题是关于$sort + $limit MongoDB 优化。 当我们在 $sort 之后立即得到 $limit 时,MongoDB 优化器只对我们在 $limit 结果中得到的对象进行排序。

来源(MongoDB 文档): https : //docs.mongodb.com/manual/core/aggregation-pipeline-optimization/#agg-sort-limit-coalescence

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM