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

如何在Mongoose单查询中同时获取关注者及自身帖子?

问题原因与解决方案

你之前的查询写法存在逻辑问题:MongoDB的查询文档中,同一个字段重复定义时,后面的条件会直接覆盖前面的。所以你写的{ user: { $in: currentUser.following }, user: currentUser._id }实际上等价于只查询user: currentUser._id,自然只会返回自己的帖子。

下面提供两种可行的解决方式:

方式1:将自身ID加入$in数组

把当前用户的ID追加到关注者ID数组中,让$in同时匹配关注者和自己:

// 复制原数组避免修改原始数据,再添加自身ID
const targetIds = [...currentUser.following, currentUser._id];
let followingUsersPost = await Post.find({ user: { $in: targetIds } })
  .populate('user', '_id name username')
  .sort({ createdAt: -1 });

方式2:使用$or操作符

通过$or定义两个并行查询条件,分别匹配关注者帖子和自身帖子:

let followingUsersPost = await Post.find({
  $or: [
    { user: { $in: currentUser.following } },
    { user: currentUser._id }
  ]
})
  .populate('user', '_id name username')
  .sort({ createdAt: -1 });

两种方式都能实现需求,方式1更简洁高效,适合这种简单的集合合并场景;方式2扩展性更强,后续如果需要添加其他查询条件可以直接在$or数组中追加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:50:22