javascript - 从 $arrayElemAt 结果中选择字段

标签 javascript mongodb mongoose mongodb-query aggregation-framework

$map 中的 $arrayElemAt 中选择特定字段。 我只想选择从 $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'],
                  },
                ],
              },
            },
          },
        },
      },
    },
  ]);

最佳答案

只需将 .dot$staffUsers 一起使用

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

关于javascript - 从 $arrayElemAt 结果中选择字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56134785/

相关文章:

mongodb - Mongoose 模式中的嵌套 map

javascript - 单击箭头或其他图标以伸展树(Splay Tree)的分支时会触发什么事件?

javascript - 打印时如何在页面上添加水印或 Logo

javascript - Youtube JS API 在 Internet Explorer 中导致错误

javascript - CKEditor在文本区域中不可编辑

Mongodb TypeError : vehicle. 保存不是函数

javascript - 使用 Node.js 操作 Mongoose/MongoDB 数组

node.js - 在EJS页面上访问mongoDB数据

mongodb - MongoDB中,如何使用聚合框架,文档少

node.js - 使用 mongoldb、mongoose、jade 和 express 通过单击按钮删除条目