【发布时间】: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