mongodb - 查询一个mongo对象——聚合
问题描述
我有一个这样的json:
[
{
"Customer_ID": 1,
"Order": [
{
"Item": "A",
"Price": 2,
"Quantity": 6
},
{
"Item": "B",
"Price": 3,
"Quantity": 6
},
{
"Item": "C",
"Price": 2,
"Quantity": 8
}
]
}
]
我想要这样的结果:
总价是价格和数量的乘积
客户,总价格
1,46
2,..
3,..
有人可以帮我做mongo查询吗?
解决方案
我希望这可以帮助你,
[{
$project: {
customer: '$Customer_ID',
values: {
$map: {
input: '$Order',
as: 'item',
'in': { $multiply: [ '$$item.Price', '$$item.Quantity' ]}
}
}
}
},
{
$project: {
customer:'$customer',
totalValue: {
$sum: '$values'
}
}
}]
让我解释一下这里发生了什么,在第一个$project块中,我们将Customer_ID投影为customer并将每个Order的Price和Quantity的乘积 作为values。然后在下一个$project块中,我们将添加values数组中的所有项目并投影为totalValue。
推荐阅读
- c# - 如何删除过载弹出窗口
- json - Json 验证自定义错误
- graph-tool - 在图形工具中查找源和目标之间的所有路径,返回边而不是顶点
- r - 如何在并行化代码 R 时释放 RAM
- python-3.x - Do I have to install packages needed each time when I start Google Colab?
- mysql - 在 SQL 中,按 INT 范围分组
- r - 使用 R 中的 shapefile 过滤经纬度点
- docker - docker build 在 Kubernetes 节点中失败
- c++ - 无法从嵌套模板声明字段为抽象类型
- oracle - 在 peoplesoft 中将经典页面链接到流畅页面