如何在管道中查找后合并对象?

问题描述

我正在为如何在聚合管道中查找后合并两个对象而苦苦挣扎。

项目文档结构:

{
  _id: "609daa4a831d2cfee5a54c7e",projectName: "Test",items: [
    {
      "show": true,"_id": "609daa4e831d2cfee5a54c7f","order": 0,"item": "609da844b9c98ffeb5b42c0f","createdAt": "2021-05-13T22:38:06.264Z","uid": "607d6f08734bdb0fdd8f9837","updatedAt": "2021-05-13T22:38:06.264Z"
    },{
      "show": true,"order": 1,"_id": "609daa4e831d2cfee5a54c7e","item": "609daaa4831d2cfee5a54c81",....
  ]

}

聚合后,我想先做一个$lookup来获取project.items[].item中引用的实际项目,然后将project.items[]中的原始数据放入一个新的key project.items[] .projectData 像这样:

const afteraggregation = {
  id: "609daa4a831d2cfee5a54c7e",items: [
    {
      "id": "609e6a82eca2c80a8d3bad8a","originalName": "z_paymentCancelled_9.wav",....
      "projectData": {
        "show": true,"updatedAt": "2021-05-13T22:38:06.264Z"
      }
    },{
      "id": "609e6a82eca2c80a8d3bad8a",]
}

这就是我进行第一次查找的方式,它可以正常工作:

"$lookup": {
        "from": "items","let": { "itemIds": "$items.item" },"pipeline": [
            { "$match": { "$expr": { "$in": ["$_id","$$itemIds"] } } },{
                $addFields: {
                    id: { $toString: "$_id" },},{
                $project: { '_id': 0,'wav2json': 0 },],"as": "items"
    }

但是不明白怎么把原来的数据加到items[].projectData??

作为奖励,我希望蜜蜂能够按 project.items[].order... 对聚合项目进行排序...

非常感谢任何帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)