node.js - 如何在 nodeJS 和 mongoDB 中进行聚合
问题描述
这是我的数据:
{"data":[{"_id":"5be83f29bea83328bca27008","purpose":"charges","amount":{"rupis":"59+5+10+60+43","total":177},"date":"2018-11-11"},
{"_id":"5be843a89043152bb453b1b4","purpose":"books","amount":{"rupis":"500+600+10+300","total":1410},"date":"2018-11-11"},
{"_id":"5bf3b30a395be7142ce5cf01","purpose":"tiffin","amount":{"rupis":"20","total":20},"date":"2018-11-15"},
{"_id":"5bf3b318395be7142ce5cf02","purpose":"movie","amount":{"rupis":"200","total":200},"date":"2018-11-10"},
{"_id":"5bf3b342395be7142ce5cf03","purpose":"snacks","amount":{"rupis":"60","total":60},"date":"2018-11-20"},
{"_id":"5bf624d135cc0832ac31e6d7","purpose":"tiffin","amount":{"rupis":"20+20","total":40},"date":"2018-11-22"},
{"_id":"5bf6258c665d9a47c88437f3","purpose":"charges","amount":{"rupis":"20","total":20},"date":"2018-11-22"},
{"_id":"5c00dd328c053104a0e0eb91","purpose":"charges","amount":{"rupis":"43","total":43},"date":"2018-11-30"},
{"_id":"5c04fd3e4b08fd12f06c98ec","purpose":"charges","amount":{"rupis":"59+5","total":64},"date":"2018-12-03"},
{"_id":"5c10e844ff1a6f06fc28e627","purpose":"shopping","amount":{"rupis":"30","total":30},"date":"2018-11-11"},
{"_id":"5c10e858ff1a6f06fc28e628","purpose":"soap","amount":{"rupis":"40+40","total":80},"date":"2018-11-11"}]}
这就是我想要的输出:
{
"charges" : 197,
"books" : 1410,
"tiffin" : 60,
"snacks" : 60,
"shopping" : 30,
"soap" : 80
}
我已经尝试了以下但它抛出错误,
db.Expense.aggregate([
{ $match: {
date: {
$gte: "2018-11-11",
$lte: "2018-11-23"
}
} },
{ $group: {
purpose: "$purpose",
total: { $sum: "$amount.total" }
} }
]);
解决方案
您的组管道需要一个_id
分组依据,将您的 $group 管道步骤重写为
{ $group: {
_id: "$purpose",
total: { $sum: "$amount.total" }
} }
或者
{ $group: {
_id: { purpose: "$purpose" },
total: { $sum: "$amount.total" }
} }
推荐阅读
- java - Spring Boot:IllegalStateException:重复的片段名称 spring_web
- javascript - For 循环在 div 中追加 div
- c - 在c中向字符串添加零填充?
- recursion - 计算 LISP 列表中单词的出现次数
- node.js - 在 Windows 10 的 cmd 中运行 npm start 命令时出现问题
- r - r中的随机森林模型
- java - 使用字符串生成器时字符串索引超出范围
- powershell - 在本地会话中访问远程(调用命令)数组变量
- oauth - 如何在 refresh_token 授权期间正确识别用户?
- kubernetes - Kubernetes 中更多默认命名端口?