【问题标题】:How can i paginate an array of a document using node and mongoose or mongo?如何使用 node 和 mongoose 或 mongodb 对文档数组进行分页?
【发布时间】:2020-07-05 16:26:28
【问题描述】:
{
"_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")

【问题讨论】:

标签: node.js database mongodb mongoose mongodb-query


【解决方案1】:

这可以通过MongoDB中的聚合来实现,请查看https://docs.mongodb.com/manual/reference/operator/aggregation/arrayElemAt/

但总的来说,由于数据库上的聚合很重,分页的优势将会丧失,您应该考虑更改文档结构并为子文档创建一个集合,并在可能的情况下添加对父文档的引用。

【讨论】:

  • 感谢您的回答,这暂时解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 2019-04-11
  • 1970-01-01
  • 2017-04-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
  • 2011-10-30
相关资源
最近更新 更多