如何将多个文档合并成一个唯一的键值文档?
How to merge several documents into a unique key value document?
我正在尝试将一组文档合并到集合 A
{'s': 'v1', 'id': 1}
{'s': 'v2', 'id': 2}
{'s': 'v3', 'id': 3}
{'s': 'v4', 'id': 4}
作为休闲键值对的唯一文档。
{
'v1': 1,
'v2': 2,
'v3': 3,
'v4': 4
}
您能否建议一种使用独特的 MongoDB 命令而不将数据保存在另一个集合中的方法?
"$group"
和 $addToSet
创建一个包含来自所有文档的 key/value 对的数组
$set
和 $arrayToObject
从前一阶段生成的数组中创建一个对象并将其分配给 result 字段
$replaceRoot
用上一步生成的结果字段替换根
db.collection.aggregate([
{
"$group": {
"_id": null,
"result": {
"$addToSet": {
"k": "$s",
"v": "$id"
}
}
}
},
{
"$set": {
"result": {
"$arrayToObject": "$result"
}
}
},
{
"$replaceRoot": {
"newRoot": "$result"
}
}
])
我正在尝试将一组文档合并到集合 A
{'s': 'v1', 'id': 1}
{'s': 'v2', 'id': 2}
{'s': 'v3', 'id': 3}
{'s': 'v4', 'id': 4}
作为休闲键值对的唯一文档。
{
'v1': 1,
'v2': 2,
'v3': 3,
'v4': 4
}
您能否建议一种使用独特的 MongoDB 命令而不将数据保存在另一个集合中的方法?
"$group"
和$addToSet
创建一个包含来自所有文档的 key/value 对的数组$set
和$arrayToObject
从前一阶段生成的数组中创建一个对象并将其分配给 result 字段$replaceRoot
用上一步生成的结果字段替换根
db.collection.aggregate([
{
"$group": {
"_id": null,
"result": {
"$addToSet": {
"k": "$s",
"v": "$id"
}
}
}
},
{
"$set": {
"result": {
"$arrayToObject": "$result"
}
}
},
{
"$replaceRoot": {
"newRoot": "$result"
}
}
])