首页 > 解决方案 > MongoDB - 有没有办法加入两个集合并按值过滤到数组字段中?

问题描述

我正在开发一个 Web 应用程序项目,该项目需要我查询 MongoDB 以检索一些数据。我真的是非关系数据库的初学者。基本上我有这两个具有以下模式的集合:

演员姓名:字符串 | 性别:字符串 ecc...

电影_id | 年份:数字 | 标题:字符串 | 演员:数组

特别是,该数组的结构如下: [0:{0:'name', 1: 'surname'}, 1: {...} ecc..]

我需要的是一个返回给定演员姓名的姓名、性别和电影列表的查询,所以我尝试了 $lookup 函数,但问题是我不知道如何访问它以匹配名称。

db.actors.aggregate([
{
  $lookup:
   {
    from: "movies",
    let: { name: "$_id"},
    pipeline: [
     {
       $match:
        {
          $expr: 
             {
                { $eq: [ "$actors",  "$$name" ] },
             }
        }
     }
    ],

    as: "movies"
}
}
])

当然,它不起作用,因为actors是一个嵌套数组。有什么解决办法吗?

标签: mongodbaggregate-functions

解决方案


推荐阅读