从 $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 结果中选择字段的主要内容,如果未能解决你的问题,请参考以下文章

从日期时间字段Mysql查询中获取日期

如何以不同的条件选择相同的字段两次并将结果显示为单独的字段

Laravel Eloquent 在与其他表连接后从关系中选择字段

在输入字段 c# 中的 Unity 上显示从日历中选择的日期

从列表框选择访问不可见的查询字段

从下拉列表中选择数据时,从 MYSQL 数据库中设置输入字段值属性