MongoDB在子文档上聚合$ unwind

时间:2020-05-07 13:10:23

标签: mongodb

从子文档中展开多个字段时,我很挣扎。

数据如下:-

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

etc,etc...

如果我为一个字段处理聚合管道,则可以正常运行,因此可以运行...

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

但是,如果我现在想使用相同的聚合返回字段2,则使用以下命令,它将为两个字段返回零计数,而以前的field1的计数大于零。

{ $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] } }
   }
}

任何建议将不胜感激。

0 个答案:

没有答案