如何合并 Mongo 中的列
How to merge columns in Mongo
我遇到了这个问题,我似乎无法解决它。
我的数据样本:
[
{'item': 'U',
'field_1': 3,
'field_2': 1,
'field_3': 1,
'field_4': 2,
'field_5': 5,
:
:
:
},
{'item': 'Y',
'field_1': 9,
'field_2': 2,
'field_3': 3,
'field_4': 5,
'field_5': 1,
:
:
:
}
]
我想创建一个名为 REST 的新字段,它将是不在我的输入数组 ([field_1, field_5]
) 中的字段的总和。
我想要的结果是这样的(对于输入 [field_1, field_5]
):
[
{'item': 'U',
'REST': 13,
},
{'item': 'Y',
'REST': 20
}
]
Mongo请各位大侠帮忙!,不胜感激。谢谢!
您可以使用 $objectToArray and $filter 来实现:
db.collection.aggregate([
{
$addFields: {
rootAsArray: {
$filter: {
input: {$objectToArray: "$$ROOT"},
as: "field",
cond: {
$and: [
{$ne: ["$$field.k", "_id"]},
{$ne: ["$$field.k", "item"]},
...any other field that's not relevant, you can also just add these to input arr ...
{$not: {$setIsSubset: [["$$field.k"], ["field_1", "field_5"]]}}
]
}
}
}
}
},
{
$project: {
item: "$item",
OTHER: {
$sum: {
$map: {
input: "$rootAsArray",
as: "value",
in: "$$value.v"
}
}
}
}
}
]);
我遇到了这个问题,我似乎无法解决它。
我的数据样本:
[
{'item': 'U',
'field_1': 3,
'field_2': 1,
'field_3': 1,
'field_4': 2,
'field_5': 5,
:
:
:
},
{'item': 'Y',
'field_1': 9,
'field_2': 2,
'field_3': 3,
'field_4': 5,
'field_5': 1,
:
:
:
}
]
我想创建一个名为 REST 的新字段,它将是不在我的输入数组 ([field_1, field_5]
) 中的字段的总和。
我想要的结果是这样的(对于输入 [field_1, field_5]
):
[
{'item': 'U',
'REST': 13,
},
{'item': 'Y',
'REST': 20
}
]
Mongo请各位大侠帮忙!,不胜感激。谢谢!
您可以使用 $objectToArray and $filter 来实现:
db.collection.aggregate([
{
$addFields: {
rootAsArray: {
$filter: {
input: {$objectToArray: "$$ROOT"},
as: "field",
cond: {
$and: [
{$ne: ["$$field.k", "_id"]},
{$ne: ["$$field.k", "item"]},
...any other field that's not relevant, you can also just add these to input arr ...
{$not: {$setIsSubset: [["$$field.k"], ["field_1", "field_5"]]}}
]
}
}
}
}
},
{
$project: {
item: "$item",
OTHER: {
$sum: {
$map: {
input: "$rootAsArray",
as: "value",
in: "$$value.v"
}
}
}
}
}
]);