Arrays 如何将MongoDB子文档中的字段分组
我有以下文件:Arrays 如何将MongoDB子文档中的字段分组,arrays,mongodb,group-by,lookup,Arrays,Mongodb,Group By,Lookup,我有以下文件: { "_id": "5a5cae1890254804e3a4655d", "additional_ingredient": { "concentration": 40.0, "formulations": [ "5a1826c664f7fe04afbe9198" ] } } 在附加成分中有一个数组字段配方。当我在文档的第一级有一个数组字段时,我可以使用$unwind,然后使用$l
{
"_id": "5a5cae1890254804e3a4655d",
"additional_ingredient": {
"concentration": 40.0,
"formulations": [
"5a1826c664f7fe04afbe9198"
]
}
}
在附加成分
中有一个数组字段配方
。当我在文档的第一级有一个数组字段时,我可以使用$unwind
,然后使用$lookup
将外部文档和该字段的组连接起来
但我不能对嵌套数组执行同样的操作。最好的解决方案是什么
我所期望的是:
{
"_id": "5a5cae1890254804e3a4655d",
"additional_ingredient": {
"concentration": 40.0,
"formulations": [
{
"_id": "5a1826c664f7fe04afbe9198",
"date_created": "Fri, 24 Nov 2017 14:03:50 GMT",
"date_modified": "Fri, 24 Nov 2017 14:03:50 GMT",
}
]
}
}
我对分组有问题<代码>字段名“附加成分.配方”不能包含。
这是查询的一部分:
{"$unwind": "$additional_ingredient.formulations"},
self.__ADDITIONAL_INGREDIENT_FORMULATION_LOOKUP_QUERY,
{"$unwind": "$additional_ingredient.formulations"},
{"$group": {
"_id": "$_id",
"additional_ingredient.formulations": {"$push": "$additional_ingredient.formulations"},
}},
嵌套数组上的
$unwind
。使用{“$unwind”:“附加成分.配方”}
我在分组时遇到问题字段名“additional_Component.formulations”不能包含“.”不清楚,您可能希望在此处添加查询,或者打开另一个更详细的问题,这是@felix的输入错误。他们的意思是:{“$unwind”:“$additional\u component.formulations”}
。所有字段路径表达式都需要$
,否则它们只是一个字符串。另一方面,为什么要在$lookup
之前执行$unwind
?这在较旧的MongoDB版本中是一个问题,但已经修复了一段时间。首先尝试在不使用$unwind
的情况下执行$lookup
,这样您就不会有多个$unwind
操作减慢速度。在$group
之前可以,但在此之前您不应该需要它。