Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/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
使用MongoDB聚合将两个列表合并到一个对象中_Mongodb_Aggregation Framework - Fatal编程技术网

使用MongoDB聚合将两个列表合并到一个对象中

使用MongoDB聚合将两个列表合并到一个对象中,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我使用的是mongoDB,我有如下类似的文档 { "files": ["Customers", "Items", "Contacts"], "counts": [1354, 892, 1542], ... } 使用聚合管道阶段,我想将上面的内容转换成更像 { "file_info": [ {"file_name": "Customers", "record_counts": 1354}, {"file_name": "Items", "record_counts

我使用的是mongoDB,我有如下类似的文档

{
  "files": ["Customers", "Items", "Contacts"],
  "counts": [1354, 892, 1542],
  ...
}
使用聚合管道阶段,我想将上面的内容转换成更像

{
  "file_info": [
    {"file_name": "Customers", "record_counts": 1354},
    {"file_name": "Items", "record_counts": 892},
    {"file_name": "Contacts", "record_counts": 1542}
  ]
}
我尝试过使用
$map、$reduce和$arrayToObject
,但没有成功。我可以使用哪些运算符从我当前所在的位置到我需要的位置?

您可以使用这些运算符组合两个阵列并获得新结构:

{
    $project: {
        file_info: {
            $map: {
                input: { $zip: { inputs: [ "$files", "$counts" ] } },
                in: {
                    file_name: { $arrayElemAt: [ "$$this", 0 ] },
                    record_counts: { $arrayElemAt: [ "$$this", 1 ] },
                }
            }
        }
    }
}

刚刚测试过,效果很好,谢谢!还感谢您向我介绍mongoplayground,这是一个非常有用的工具!