mongo db - 将值投影到向量中
mongo db - project values into vectors
我想将多个文档的值合并为一个文档。
原始文件:
{'a': 1, 'b': 2}
{'a': 100, 'b': 200}
期望的输出:
{'a': [1, 100], 'b': [2, 200]}
管道 group\project 可以帮助我吗?
您需要使用 $objectToArray and $$ROOT
variable. Then you can run $group twice in order to get single document containing all the arrays. In the last step you can run $replaceRoot with $arrayToObject 将您的文档转换为数组,以获得 a,b..
作为您的文档键。
db.collection.aggregate([
{
$project: {
_id: 0
}
},
{
$project: {
data: { $objectToArray: "$$ROOT" }
}
},
{ $unwind: "$data" },
{
$group: {
_id: "$data.k",
vals: { $push: "$data.v" }
}
},
{
$group: {
_id: null,
aggregates: { $push: { k: "$_id", v: "$vals" } }
}
},
{
$replaceRoot: {
newRoot: { $arrayToObject: "$aggregates" }
}
}
])
我想将多个文档的值合并为一个文档。
原始文件:
{'a': 1, 'b': 2}
{'a': 100, 'b': 200}
期望的输出:
{'a': [1, 100], 'b': [2, 200]}
管道 group\project 可以帮助我吗?
您需要使用 $objectToArray and $$ROOT
variable. Then you can run $group twice in order to get single document containing all the arrays. In the last step you can run $replaceRoot with $arrayToObject 将您的文档转换为数组,以获得 a,b..
作为您的文档键。
db.collection.aggregate([
{
$project: {
_id: 0
}
},
{
$project: {
data: { $objectToArray: "$$ROOT" }
}
},
{ $unwind: "$data" },
{
$group: {
_id: "$data.k",
vals: { $push: "$data.v" }
}
},
{
$group: {
_id: null,
aggregates: { $push: { k: "$_id", v: "$vals" } }
}
},
{
$replaceRoot: {
newRoot: { $arrayToObject: "$aggregates" }
}
}
])