(MongoDB)聚合项目返回值失败



我已经成功地完成了$查找,现在我想定义应该使用$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
},
},
],
},
}

最新更新