【问题标题】:Retrive array's first three element from document search based upon ID根据 ID 从文档搜索中检索数组的前三个元素
【发布时间】:2021-02-01 22:59:15
【问题描述】:

我在文档中有一个数组,假设用户有 followedBy 数组我想根据 ID 查找用户,然后只想检索 followedBy 的前 3 个元素。

在图片中你可以看到我有用户集合,然后在用户内部我有一个名为 followedBy 的数组。

我需要首先根据 Id 搜索用户,然后在单个查询中检索数组的前 3 个元素,而不是先获取用户并获取其中包含数千个成员的 followedBy 数组,然后对其应用切片。

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query


    【解决方案1】:

    根据docs,您可以使用$slice 进行投影。

    所以你必须这样做:

    db.collection.find({
      "_id": your_id
    },
    {
      "followedBy": {
        "$slice": 3
      }
    })
    

    查看this 示例。

    使用mongoose是完全相同的查询:

    YourModel.find({
        "id": your_id
      },
      {
        "followedBy": {
          "$slice": 3
        }
      })
    .then(result => {
      // ...
    }).catch(e => {})
    

    【讨论】:

    • 谢谢,它解决了问题,让我知道我们是否可以像在获取多条记录时那样在这里进行超级分页,或者我们只有通过切片应用的方法?虽然 slice 也可以工作。你有什么建议?
    猜你喜欢
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 2022-12-17
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多