$arrayToObject (aggregation)

在本页面

定义

$arrayToObject

3.4.4版中的新功能。

将数组转换为单个文档;数组必须为:

  • 一个由两个元素组成的数组,其中第一个元素是字段名称,第二个元素是字段值:

    [ [ "item", "abc123"], [ "qty", 25 ] ]

-OR-

  • 文件数组,包含两个字段,k并且v 其中:

    • k字段包含字段名称。

    • v字段包含该字段的值。

    [ { "k": "item", "v": "abc123"}, { "k": "qty", "v": 25 } ]

$arrayToObject具有以下语法:

{ $arrayToObject: <expression> }

<expression>可以是任何有效的表达解析为两个元件阵列或包含“k”和“V”域的文档阵列的阵列。

有关表达式的更多信息,请参见 表达式。

行为

如果字段名称在数组中重复,

  • 从4.0.5开始,$arrayToObject使用该字段的最后一个值。对于4.0.0-4.0.4,使用的值取决于驱动程序。

  • 从3.6.10开始,$arrayToObject使用该字段的最后一个值。对于3.6.0-3.6.9,使用的值取决于驱动程序。

  • 从3.4.19开始,$arrayToObject使用该字段的最后一个值。对于3.4.0-3.4.19,使用的值取决于驱动程序。

例子
结果

{ $arrayToObject: { $literal: [ { "k": "item", "v": "abc123"}, { "k": "qty", "v": 25 } ] } }

{ "item" : "abc123", "qty" : 25 }

{ $arrayToObject: { $literal: [ [ "item", "abc123"], [ "qty", 25 ] ] } }

{ "item" : "abc123", "qty" : 25 }

{ $arrayToObject: { $literal: [ { "k": "item", "v": "123abc"}, { "k": "item", "v": "abc123" } ] } }

{ "item" : "abc123" } 从版本4.0.5+(3.6.10+和3.4.19+)开始,如果字段名称在数组中重复,则$arrayToObject 使用该字段的最后一个值。

例子

$arrayToObject 例子

考虑inventory包含以下文档的集合:

以下聚合管道操作使用 $arrayToObject将该dimensions字段作为文档返回:

该操作返回以下结果:

从版本4.0.5+(3.6.10+和3.4.19+)开始,如果字段名称在数组中重复,则$arrayToObject使用该字段的最后一个值。

$objectToArray+ $arrayToObject示例

考虑inventory包含以下文档的集合:

以下聚合管道操作将计算每个物料的总存货并将其添加到instock凭证中:

该操作返回以下内容:

也可以看看

$objectToArray

译者:李冠飞

校对:

最后更新于