从 $arrayElemAt 结果中选择字段
Posted
技术标签:
【中文标题】从 $arrayElemAt 结果中选择字段【英文标题】:Pick field from $arrayElemAt result 【发布时间】:2019-10-01 17:43:31 【问题描述】:从$arrayElemAt
中的$map
中选择特定字段。
我只想选择从 $arrayElemAt
处的对象返回的名称字段
const data = await this.aggregate([
$match: provider_id: providerId ,
,
$lookup:
from: 'users',
localField: 'staff.user_id',
foreignField: '_id',
as: 'staffUsers',
,
,
$project:
staff:
$map:
input: '$staff',
in:
_id: '$$this._id',
email_login: '$$this.email_login',
full_calendar_view: '$$this.full_calendar_view',
verified: '$$this.verified',
user_id: '$$this.user_id',
description: '$$this.description',
name:
$arrayElemAt: [
'$staffUsers',
$indexOfArray: ['$staffUsers._id', '$$this.user_id'],
,
],
,
,
,
,
,
,
]);
【问题讨论】:
【参考方案1】:只需将.dot
与$staffUsers
一起使用
"name":
"$arrayElemAt": [
"$staffUsers.name",
"$indexOfArray": ["$staffUsers._id", "$$this.user_id"]
]
【讨论】:
谢谢它的工作。我实际上是这样写的,但没有尝试,因为我认为它不起作用。哈哈。以上是关于从 $arrayElemAt 结果中选择字段的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Eloquent 在与其他表连接后从关系中选择字段