mongodb 中 3 个排序规则之间的链嵌入关系

chain embedded relation between 3 collation in mongodb

我正在尝试通过 mongodb 中的嵌入关系从 3 个集合中获取数据。

user_collection :

{
    _id:1,
    name:"Noah",
    city_id:2,
    job_id:3
},
{
    _id:2,
    name:"Oliver",
    city_id:2,
    job_id:1
},
{
    _id:3,
    name:"William",
    city_id:1,
    job_id:3
},

city_collection :

{
    _id:1,
    name:"Tokyo",

},
{
    _id:2,
    name:"Mexico City",

},
{
    _id:3,
    name:"Los Angeles",

},

job_collection :

{
    _id:1,
    title:"Architect",
},
{
    _id:2,
    title:"Barista",
},
{
    _id:3,
    title:"Farmer",
},

我有这 3 个集合,想按城市列出我的用户,并在 returned JSON

的用户部分设置他们的工作

我想获取嵌套的 JSON。

city_collection to user_collection to job_collection

像这样:

[
    {
        _id:1,
        name:"Tokyo",
        users:[{
            _id:3,
            name:"William",
            job:[{
                _id:1,
                title:"Architect",
            }]
        }]
    
    },
    {
        _id:2,
        name:"Mexico City",
        users:[{
            _id:1,
            name:"Noah",
            job:[{
                _id:3,
                title:"Farmer",
            }]
        },
        {
            _id:2,
            name:"Oliver",
            job:[{
                _id:1,
                title:"Architect",
            }]
        }]
    
    },
    {
        _id:3,
        name:"Los Angeles",
        users:[]
    
    },
]

我使用 $lookup 但它没有 return 我想要的。

使用双倍$lookup

db.city.aggregate([
  {
    $lookup: {
      from: "user",
      localField: "_id",
      foreignField: "city_id",
      as: "users",
      pipeline: [
        {
          $lookup: {
            from: "job",
            localField: "job_id",
            foreignField: "_id",
            as: "jobs"
          }
        }
      ]
    }
  }
])

mongoplayground