You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB查询问题:获取指定用户关注者的帖子

解决获取指定用户关注者帖子的聚合查询问题

原查询的问题分析

你写的聚合管道逻辑完全搞反了:从posts集合出发关联follows,最后匹配post.user等于该作者的关注者,这相当于找“帖子作者自己关注的人等于自己”的帖子,显然不符合需求,自然查不到数据。

正确的聚合实现思路

要获取指定用户关注的人发布的帖子,应该先从follows集合拿到该用户的关注列表,再关联posts筛选对应内容,具体步骤如下:

  • 定位目标用户的关注记录:用$match筛选出指定用户的follows文档
  • 拆分关注列表:用$unwind把followings数组拆成单个用户ID的文档
  • 关联帖子集合:用$lookup关联posts,匹配关注用户ID对应的帖子
  • 整理输出结构:拆分关联后的帖子数组,去除冗余字段(可选)

正确的聚合管道代码

假设要查询的指定用户ID是TARGET_USER_ID,管道代码如下:

[
  // 匹配目标用户的follow记录
  {
    $match: {
      user: "TARGET_USER_ID"
    }
  },
  // 拆分followings数组为单个用户文档
  {
    $unwind: "$followings"
  },
  // 关联posts集合,获取该关注用户的所有帖子
  {
    $lookup: {
      from: "posts",
      localField: "followings",
      foreignField: "user",
      as: "following_posts"
    }
  },
  // 拆分帖子数组,让每个帖子单独成为一个文档(可选,根据输出需求调整)
  {
    $unwind: "$following_posts"
  },
  // 可选:只保留需要的字段,精简输出
  {
    $project: {
      _id: 0,
      post: "$following_posts"
    }
  }
]

补充说明

  • 如果不需要每个帖子单独成文档,可以去掉最后一个$unwind,此时输出会是每个关注用户对应其所有帖子的数组
  • 确保TARGET_USER_ID替换为实际的用户ID值,且集合名称(posts、follows)和字段名与你的数据库完全一致

内容的提问来源于stack exchange,提问作者Shivam Soni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 18:37:08