【问题标题】:MongoDB Aggregate $unwind on sub-DocumentsMongoDB 在子文档上聚合 $unwind
【发布时间】:2020-05-07 21:23:36
【问题描述】:

当我从子文档中$unwind 多个字段时,我很挣扎。

数据如下:-

{
   resp: {
      field1: 'yes',
      field2: ''
},
{
   resp: {
      field1: 'yes',
      field2: ''
}

etc,etc...

如果我为 ONE 字段处理聚合管道,它可以正常工作,因此可以正常工作...

{ $unwind: "$resp" },
{ $unwind: "$resp.field1" },
{ $project: { field1: "$resp.field1" } }
{ $group: {
     _id: 1,
     field1: { $sum: { $cond: [{ $eq: ["$field1","yes"] },1,0] } } 
   }
}

但是,如果我现在想在同一个聚合中返回字段 2,使用以下命令,它将返回两个字段的计数为零,而之前字段 1 的计数 > 零。

{ $unwind: "$resp" },
{ $unwind: "$resp.field1" },
{ $unwind: "$resp.field2" },
{ 
 $project: { 
     field1: "$resp.field1",
     field2: "$resp.field2" 
}, 
{ $group: {
     _id: 1,
     field1: { $sum: { $cond: [{ $eq: ["$field1","yes"] },1,0] } },
     field2: { $sum: { $cond: [{ $eq: ["$field2","yes"] },1,0] } }
   }
}

任何建议将不胜感激。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    上面似乎是正确的方法,但我很乐意接受其他建议。错误出现在 $project 阶段的字段映射中。在将问题输入 SO 时,我意识到问题出在哪里!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-08
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 2019-09-03
      相关资源
      最近更新 更多