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版本。看见