MongoDb聚合运算符$arrayToObject
可以将一个数组转换为文档。注意只有两种数组才可以转换为文档,参见$arrayToObject使用
。
语法
{
$arrayToObject: <expression> }
<expression>
必须是数组或能够被解析为数组的表达式,而且数组元素要么是只有两个元素的数组,要么是包含k
、v
两个字段的文档数组。
使用
注意,不是所有的数组表达式都能转换为文档,只有下面两种数组才可以进行转换:
-
只有两个元素的数组,第一个元素为字段名,第二个元素为字段值:
[ [ [ "item", "abc123" ], [ "qty", 25 ] ] ]
-
包含两个字段的文档数组,一个字段是
k
一个字段是v
:- 字段
k
包含了字段名 - 字段
v
包含了字段值
[ [ { "k": "item", "v": "abc123" }, { "k": "qty", "v": 25 } ] ]
- 字段
例子 | 返回 |
---|---|
{ $arrayToObject: [[ { "k": "item", "v": "abc123" }, { "k": "qty", "v": "$qty" } ]] } |
当文档字段qty 的值为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" } |
举例
$arrayToObject
集合inventory
中有下面的文档:
{
"_id" : 1, "item" : "ABC1", dimensions: