如何仅加入特定字段?使用$ lookup时,mongo会返回整个文档。
让我们说出我的数据:
用户
[
{ id: 0, name: "Bob", adj: 1 },
{ id: 1, name: "Will", adj: 2 },
]
形容词
[
{ id: 1, name: "awesome" },
{ id: 2, name: "cool" },
]
我想进行查找,因此响应应该是:
[
{ id: 0, name: "Bob", adj: 1, adj_value: "awesome" },
{ id: 1, name: "Will", adj: 2, adj_value: "cool" },
]
这是我的尝试
db.collection('users').aggregate([
{
$lookup: {
from: 'adjectives',
localField: 'adj',
foreignField: 'name',
as: 'adjective_value'
},
},
])
但是它将整个文档插入到用户文档中。如何只回应单个字段?
答案 0 :(得分:8)
在$project
管道中,您可以从查找集合对象中获取单个字段。
db.collection('users').aggregate([
{
$lookup: {
from: 'adjectives',
localField: 'adj',
foreignField: 'id',
as: 'adjective_value'
},
},
{$unwind:'$adjective_value'},
{$project:{
adjective_value:'$adjective_value.name',
id: 1,
name: 1,
adj: 1
}}
])