通过查找匹配数组中包含的元素

问题描述 投票:0回答:1

我的帖子集合为:

{
    _id: SOME_ID,
    user: SOME_USER_ID,
    media: SOME_LINK
}

以及以下集合:

{
    _id: SOME_ID,
    user: SOME_USER_ID,
    followings: ["SOME_USER_ID"],
    followers: ["SOME_USER_ID"]
}

我想从给定用户的关注数组包含的用户那里获取帖子

我尝试过这个,但没有显示任何文档,尝试过gpt,但它说一切都很好

[
  {
    $lookup: {
      from: "follows",
      localField: "user",
      foreignField: "user",
      as: "follow",
    },
  },
  {
    $unwind: "$follow",
  },
  {
    $unwind: "$follow.followings"
  },
  {
    $addFields: {
      following: "$follow.followings"
    }
  },
  {
    $match: {
            $expr: {
        $eq: ["$user", "$following"]
      }
    }
  },
]
mongodb aggregation-framework
1个回答
0
投票

我通过聚合管道获取了所有关注者列表。

const follow = await Post.aggregate([
  {
    $lookup: {
      from: "follows",
      localField: "user",
      foreignField: "user",
      as: "follow" 
  },
  {
    $unwind: "$follow"
  },
  {
    $project: {
      follow: 1
  },
  {
    $limit: 1
  }
])

现在在帖子中搜索它

const posts = await Post.find({ user: { $in: follow[0].followings } })

posts 包含用户关注的所有帖子

© www.soinside.com 2019 - 2024. All rights reserved.