Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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_Nosql - Fatal编程技术网

MongoDB开关键值对

MongoDB开关键值对,mongodb,aggregation-framework,nosql,Mongodb,Aggregation Framework,Nosql,是否存在要转换以下内容的聚合查询: { "data": [ { "key": "aaa", "values": [1,2,3] }, { "key": "bbb", "values": [4,5,6] } ] } 对这个结构有什么影响 { "data": [ { "aaa": "1,2,3" }, { "bb": "4,5,6" } ] }

是否存在要转换以下内容的聚合查询:

{
  "data": [
    {
      "key": "aaa",
      "values": [1,2,3]
    },
    {
      "key": "bbb",
      "values": [4,5,6]
    }
  ]
}
对这个结构有什么影响

{
  "data": [
    {
      "aaa": "1,2,3"
    },
    {
      "bb": "4,5,6"
    }
  ]
}
下面我可以搜索聚合命令的一些提示或关键字也很有用

更新: 我使用的是MongoDB 3.4.3,因此不幸的是,
$arrayToObject
无法工作。所以我想,问题更为根本:

有没有办法为MongoDB 3.4.3或更低版本设置通用字段名(根据其他值)


提前感谢:)

要将键和值切换为实际的JSON键/值对,您可以使用操作符。 虽然首先必须将字段名
更改为
k
v
,如下所示:

{
  "data": [
    {
      "k": "aaa",
      "v": [1,2,3]
    },
    {
      "k": "bbb",
      "v": [4,5,6]
    }
  ]
}
修改文档字段后,使用运算符
$arrayToObject

db.collection.aggregate([
              { $project : { data : { $arrayToObject : "$data" }}}
]);
其输出如下:

{
  "data": {
    "aaa": [1, 2, 3],
    "bbb": [4, 5, 6]
  }
}
请注意,
$arrayToObject
数组聚合运算符在MongoDB v3.4.4+中可用

有关反向聚合运算符,请参见

如果您还希望将数组
[1,2,3]
的值转换为
“1,2,3”
的单个字符串,则可以使用字符串运算符


另请参见手册中的更多聚合和

要将键和值切换为实际的JSON键/值对,可以使用运算符。 虽然首先必须将字段名
更改为
k
v
,如下所示:

{
  "data": [
    {
      "k": "aaa",
      "v": [1,2,3]
    },
    {
      "k": "bbb",
      "v": [4,5,6]
    }
  ]
}
修改文档字段后,使用运算符
$arrayToObject

db.collection.aggregate([
              { $project : { data : { $arrayToObject : "$data" }}}
]);
其输出如下:

{
  "data": {
    "aaa": [1, 2, 3],
    "bbb": [4, 5, 6]
  }
}
请注意,
$arrayToObject
数组聚合运算符在MongoDB v3.4.4+中可用

有关反向聚合运算符,请参见

如果您还希望将数组
[1,2,3]
的值转换为
“1,2,3”
的单个字符串,则可以使用字符串运算符


另请参见手册中的更多聚合和

不幸的是,我们正在运行3.4.3。。。无论如何谢谢:-)如果可能的话,我建议从3.4.3版本升级到最新的3.4.x版本。很遗憾,我们正在运行3.4.3。。。无论如何谢谢:-)如果可能的话,我建议从3.4.3版本升级到最新的3.4.x版本。看见