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"
}
}
]
}
}
])
我正在尝试通过 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"
}
}
]
}
}
])