繁体   English   中英

如何弄平由 $lookup 在 MongoDB 中生成的内部数组

[英]How to flat out inner array generated by $lookup in MongoDB

我有 2 个集合,员工和潜在客户。

考虑查询:

  const collections = Employees.aggregate(
      [

        {
          $group: {
            _id: "$LeadId",
            total: { $sum: "$..." }
          }
        },
        {
          $lookup: {
            from: "leads",
            localField: "_id",
            foreignField: "LeadId",
            as: "Joined"
          }
        },
        { $unwind: "$Joined" },
        { $sort: { total: -1 } }
      ],
      function(err, results) {
        if (err) {
          console.log(err);
        }

        // whatever
      }
    );

它产生的结果:

[0]    _id: '6822ace7-00c4-4a3c-ac8e-56c7d715066c',
[0]     total: 0,
[0]     Joined: {
[0]       _id: 5de1bda51406d20017e69dbb,
[0]       Rooms: '3',
[0]       PhoneNumberMasque: '541234567',
[0]       supplier: 5de1bd861406d20017e69db2,
[0]       PackageId: 'Package_1457d5a7-2798-4ad6-99ca-a634b94e845d',
[0]       LeadId: '6822ace7-00c4-4a3c-ac8e-56c7d715066c',
[0]       __v: 0
[0]     }
[0]   },

查找结果的其余部分在Joined数组内。

怎么提取出来?

编辑@Ashh 建议结果是:

  {
[0]     _id: '559c02a3-d933-41ff-b605-82a23ee94702',
[0]     Rooms: '2',
[0]     PhoneNumberMasque: '52123456',
[0]     supplier: 5de1bd861406d20017e69db2,
[0]     PackageId: 'Package_1457d5a7-2798-4ad6-99ca-a634b94e845d',
[0]     LeadId: '559c02a3-d933-41ff-b605-82a23ee94702',
[0]     PublishDate: 2019-11-30T02:53:57.000Z,
[0]     Duplicate: false,
[0]     Valid: true,
[0]     __v: 0,
[0]     total: 2,
[0]     Joined: {
[0]       _id: 5de1bda51406d20017e69dba,
[0]       Rooms: '2',
[0]       PhoneNumberMasque: '52123456',
[0]       supplier: 5de1bd861406d20017e69db2,
[0]       PackageId: 'Package_1457d5a7-2798-4ad6-99ca-a634b94e845d',
[0]       LeadId: '559c02a3-d933-41ff-b605-82a23ee94702',
[0]       PublishDate: 2019-11-30T02:53:57.000Z,
[0]       Duplicate: false,
[0]       Valid: true,
[0]       __v: 0
[0]     }
[0]   },

$replaceRootJoined$$ROOT字段一起使用。 它将为您带来 TOP 级别的Joined字段。

{ $replaceRoot: { newRoot: { $mergeObjects: ["$Joined", "$$ROOT"] }}},
{ $project: { Joined: 0 }}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM