我已经成功地完成了$查找,现在我想定义应该使用$project列出哪些字段。我的集合有点奇怪,因为它在显示数组之前有另一个分组,所以例如compname.name不返回任何东西。如何使用此附加分组"0"来执行项目?碍事?
这是我的第一个可以工作的$项目
/**
* specifications: The fields to
* include or exclude.
*/
{
compname: 1
}
这是上面$project
的输出/* output */
id: ObjectId("5fa571d148065e4ec8f77c12")
compname:Array
0:Object
_id: ObjectId("5f5237efa70fd23677238428")
members:Array
units:Array
deals:Array
templates:Array
name:"Company 1"
hierarchy:Array
__v:705
links:Array
clauses:Array
sections:Array
certification:"PLATINUM"
pendingMembers:Array
address:Object
website:
lastMemberLeft:2021-08-04T09:27:25.917+00:00
created:2021-08-02T10:35:35.003+00:00
straightToLease:Object
我正在呼叫"name"。只从上面的输出,所以我尝试,但它返回空白
/**
* specifications: The fields to
* include or exclude.
*/
{
compname.name: 1
}
帮忙吗?
如果您使用管道查找,那么您可以使用$project来查找管道中的关系
编辑'from', 'let'和'pipeline.$match。
注意:'indicator_id'是一个变量
{
$lookup: {
from: 'companies',
let: { indicator_id: '$_id' },
as: 'compname',
pipeline: [
{
$match: {
$expr: { $eq: ['$_id', '$$indicator_id'] },
},
},
{
$project: {
name: 1
},
},
],
},
}