首页 > 解决方案 > 根据 ID 从文档搜索中检索数组的前三个元素

问题描述

我在文档中有一个数组,可以说用户有followedBy数组,我想根据 ID 查找用户,然后只想检索followedBy.

在图片中,您可以看到我有用户集合,然后在用户内部我有一个名为followedBy.

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

在此处输入图像描述

标签: node.jsmongodbmongoosemongodb-query

解决方案


根据文档,您可以将$slice其用于投影。

所以你必须这样做:

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

检查这个例子。

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

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

推荐阅读