嵌套在文档数组中的mongodb展开数组
在MongoDB中,我需要能够将嵌套在文档中的数组展开到主文档中的数组中嵌套在文档数组中的mongodb展开数组,mongodb,aggregation-framework,Mongodb,Aggregation Framework,在MongoDB中,我需要能够将嵌套在文档中的数组展开到主文档中的数组中 { “_id”:ObjectId(“5808d700536d1a3d69f4cf51”), “姓氏”:“梅蒂”, “希思马克”:58, “id”:“3539488”, “名字”:“哈沙瓦丹”, “课程名称”:“BE/B.Tech”, “学院名称”:“阿卜哈亚普里学院,P.O.阿卜哈亚普里”, “个人资料百分比”:45, “xiith_mark_type”:“百分比”, “第X个标记类型”:“百分比”, “出生日期”:“19
{
“_id”:ObjectId(“5808d700536d1a3d69f4cf51”),
“姓氏”:“梅蒂”,
“希思马克”:58,
“id”:“3539488”,
“名字”:“哈沙瓦丹”,
“课程名称”:“BE/B.Tech”,
“学院名称”:“阿卜哈亚普里学院,P.O.阿卜哈亚普里”,
“个人资料百分比”:45,
“xiith_mark_type”:“百分比”,
“第X个标记类型”:“百分比”,
“出生日期”:“1993年4月14日”,
“X分”:30分,
“上次登录”:1470827224,
“百分比”:55,
“作业详细信息”:[
{
“状态”:长(6)号,
“申请日期”:数字长(1470831441),
“作业id”:编号长(92928),
“联系人状态”:0,
“标签名称”:[
“入围名单”,
“拒绝”
],
“调查问卷状态”:0,
“批次id”:编号长(6),
“来电信”:号码长(812)
},
{
“状态”:长(6)号,
“申请日期”:数字长(1470831441),
“作业id”:编号长(92928),
“联系人状态”:0,
“标签名称”:[
“入围名单”,
“拒绝”
],
“调查问卷状态”:0,
“批次id”:编号长(6),
“来电信”:号码长(812)
}
],
“分支机构名称”:“应用电子”,
“候选人州名”:“西孟加拉邦”,
“候选城市名称字符串”:“加尔各答”,
"10" : 10,
"12" : 12,
“技能”:“,
“性别”:“男性”,
“fw_id”:“FW15884830”,
“cgpa”:0,
“图片路径”:“,
“总部发放年度”:2019年
}
根据以上记录,我需要计算工作标签(工作详细信息。标签名称)
我尝试了以下查询:
db.response.aggregate(
{“$match”:键入_match},
{“$unwind”:“$job_details”},
{“$组”:
{
“\u id”:“$job\u details.label\u name”,
“计数”:{“$sum”:1}
}
}
])
输出为:
{
“计数”:2,
“_id”:[
“入围名单”,
“拒绝”
]
}
但我希望输出是:
[
{
“计数”:1,
_id:“入围名单”
},
{
“计数”:1,
_id:“已拒绝”
}
]
如何获得此输出?在阶段中,字段应为数组字段。如果不是数组字段,则将其视为1个元素的数组
从文档中:
在版本3.2中更改:$unwind stage不再在非数组操作数上出现错误。如果操作数未解析为数组,但未丢失、为null或为空数组,$unwind将操作数视为单元素数组
回答你的问题:
db.response.aggregate([
{
$project:
{
"job_details.label_name":1,
_id:0
}
},
{
$unwind:"$job_details.label_name"
},
{
$group:
{
_id:"$job_details.label_name",
count:{$sum:1}
}
}
])
请参阅Shell您是否询问如何计算“job\u details.label\u name”数组中的元素数?在客户端执行计数可能更容易。您发布的聚合查询在语法上不正确。没有起始“[”大括号,但有一个结尾。我改进了您问题中的措辞和格式,使其更具可读性;我还添加了标记聚合框架。{“结果”:[],“确定”:1}你能发布shell输出的快照吗?很抱歉,Nigil正在工作,但在我的文档中还有一个更改。在上面的文档作业详细信息中,我声明为一个单独的文档,实际上这是一个文档列表。对于mongo 3.6,这不起作用。结果是emptyYes可能>3.6,我使用的是4.0,其中对嵌套数组使用点表示法不起作用要清空数组,必须执行两次$unwind,这很无聊。如果有人有解决方案,请告诉我们!!