node.js - 如何使用 node 和 mongoose 或 mongo 对文档数组进行分页?
问题描述
{
"_id" : ObjectId("5f0083848f162b38900dc113"),
"isEmailVerified" : false,
"isProfileSetup" : true,
"my_events" : [
ObjectId("5f005a63b5524eb74813de11"),
ObjectId("5f005a5bb5524eb74813de0c"),
ObjectId("5f017dfcf8e6d8615cddfd6f")
]
}
我在用户的集合中有这个文档,我正在尝试仅对数组 my_events 进行分页。如果这是一个愚蠢的问题,我很抱歉。
首先,这是否可以在没有事件完全从数据库中获取它的情况下对该数组进行分页,如果是,请在此处分享方式。
{{url_local}}/api/event?user_id=5f0083848f162b38900dc113&page=1&limit=2
上面的调用应该找到提到 user_id 的用户,并且应该只返回这些值:-
ObjectId("5f005a63b5524eb74813de11"),
ObjectId("5f005a5bb5524eb74813de0c")
和,
{{url_local}}/api/event?user_id=5f0083848f162b38900dc113&page=2&limit=2
它应该返回这个: -
ObjectId("5f017dfcf8e6d8615cddfd6f")
解决方案
这可以通过 MongoDB 中的聚合来实现,请检查https://docs.mongodb.com/manual/reference/operator/aggregation/arrayElemAt/
但总的来说,由于数据库上的聚合很重,分页的优势将会丢失,您应该考虑更改文档结构并为子文档创建一个集合,并尽可能添加对父文档的引用。
推荐阅读
- r - Boxplot 在使用 NA 时存在问题 - 查找错误/错误
- rust - 如何在 Specs 系统中搜索另一个实体?
- python - 启动内核时出现 Spyder 权限错误,管理员权限不会更改任何内容
- python - 错误,模块整洁没有属性配置
- html - 应用轮播问题Angular 11,Bootstrap
- sql-server - 如何永久修复此“数据库 AdventureWorks2014 恢复失败”?
- django - DetailView 中查询集的下一个和上一个按钮
- python - 非常大的数据集中的成对距离
- amazon-web-services - 有谁知道如何减少 AWS 上的数据传出费用?
- python - Python 3 telnetlib 路由器重启