微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

项目文档结构:

{
  _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 举报,一经查实,本站将立刻删除。