Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何将MongoDB子文档中的字段分组_Arrays_Mongodb_Group By_Lookup - Fatal编程技术网

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
之前可以,但在此之前您不应该需要它。