提问者:小点点

如何在Mongodb中将查找结果添加到投影值中


我有一个$lookup结果保存为username,我想将其添加到名为approvation的预计结果中。 我想我可以这样添加它:'approval.username':'$username',但是没有用。

如何将username结果添加到预测结果中? (同时username返回其他数据的数组,如何仅指定firstnamelastname键。)

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

注意,我希望维护在approvation中投影的所有结果。

此时输出为:

{
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' }
}

共1个答案

匿名用户

您可以尝试使用$MergeObjects运算符:

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

MongoPlayground备选$let