首页 > 解决方案 > 如何在 Mongodb 中将查找结果添加到投影值

问题描述

我有一个$lookup结果保存为username,我想将其添加到名为approval. 我想我可以像这样添加它:'approval.username' : '$username',但是那不起作用。

如何将username结果添加到预计结果中?(还username返回一个其他数据的数组,我如何指定firstnamelastname键。)

$project: {
            address: 1,
            approval: {
                    $arrayElemAt: ["$approval", 0],
                },
            }

请注意,我想保留所有预测的结果approval

目前的输出是:

{
address: { 'addresshere' },
approval: { recordToApprove : "1010", createDT : "2020-07 18T14:29:54+01:00"}
}

我正在寻找的输出是:

{
address: { 'addresshere' },
approval: { recordToApprove : "1010", createDT : "2020-07 18T14:29:54+01:00", username: {firstname: 'First', lastname: 'Last' }
}

标签: node.jsmongodb

解决方案


你可以试试$mergeObjects运营商:

db.collection.aggregate([
  {
    $project: {
      address: 1,
      user_details: {
        $mergeObjects: [
          {
            $arrayElemAt: ["$approval", 0]
          },
          {
            username: { $arrayElemAt: ["$username", 0] }
          }
        ]
      }
    }
  }
])

Mongo游乐场| 替代 $let


推荐阅读