面试题答案
一键面试1. 业务场景
- limit:
- 展示固定数量数据:例如在新闻APP首页,为了避免加载过多数据影响性能,每次只展示10条最新新闻。
- 排行榜场景:显示游戏排行榜前100名玩家信息,仅获取需要展示的有限数据。
- skip:
- 分页场景:当用户点击新闻APP的“下一页”时,通过
skip
跳过已展示的新闻数量,结合limit
获取下一页数据。假设每页10条新闻,第二页就skip(10)
。 - 筛选特定范围数据:在统计用户活跃度数据时,可能需要跳过前100个活跃度异常(比如测试数据)的用户,从第101个用户开始分析。
- 分页场景:当用户点击新闻APP的“下一页”时,通过
- sort:
- 按时间排序:在社交平台,展示用户动态时,按发布时间从新到旧排序,方便用户及时看到最新消息。
- 按热度排序:在电商平台商品搜索结果中,按商品销量或评论数从高到低排序,将热门商品优先展示。
2. 结合使用示例
假设我们有一个users
集合,每个文档包含name
、age
和join_date
字段。
按加入日期从新到旧排序,获取第2页(每页10条)的用户
db.users.find()
.sort({join_date: -1})
.skip(10)
.limit(10);
在上述示例中,首先使用sort
方法按join_date
字段从新到旧排序(-1
表示降序)。然后,skip(10)
跳过前10条记录,相当于从第11条记录开始。最后,limit(10)
只返回10条记录,即第2页的数据。