【问题标题】:Pick field from $arrayElemAt result从 $arrayElemAt 结果中选择字段
【发布时间】: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'],
                  },
                ],
              },
            },
          },
        },
      },
    },
  ]);

【问题讨论】:

    标签: javascript mongodb mongoose mongodb-query aggregation-framework


    【解决方案1】:

    只需将.dot$staffUsers 一起使用

    { "name": {
      "$arrayElemAt": [
        "$staffUsers.name",
        { "$indexOfArray": ["$staffUsers._id", "$$this.user_id"] }
      ]
    }}
    

    【讨论】:

    • 谢谢它的工作。我实际上是这样写的,但没有尝试,因为我认为它不起作用。哈哈。
    猜你喜欢
    • 2016-04-13
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多