mongodb - mongoDB聚合:如何使用值作为键
问题描述
嗨,我有一些记录,例如:
{_id:xxx, user:1, item:A, count: 1}
{_id:xxx, user:1, item:B, count: 3}
{_id:xxx, user:2, item:A, count: 5}
{_id:xxx, user:2, item:B, count: 2}
我可以通过使用聚合获得下面的字典吗?
{user:1,{A:1,B:3}, user:2,{A:5,B:2}}
解决方案
你可以使用这个$group $arrayToObject
db.col.aggregate([
{"$group" : {"_id" : "$user","data" : {"$push" : {"k" : "$item","v" : "$count"}}}},
{ "$project" : {"user" : "$_id","_id" : 0, "data" : { "$arrayToObject" : "$data" }}}
])
推荐阅读
- xml - 如何获取两个标记标签之间的所有元素?
- node.js - 做 pm2 restart 终止正在进行的 rest api
- javascript - 从 addEventListener 函数向 ng-repeat 添加数据不会更新 DOM
- r - 是否可以使用 cdf 在一个图中绘制多个 ecdf 和 cdf?
- java - java.lang.IllegalStateException:无法在 AndroidPlatform、sslSocketFactory 上提取信任管理器
- mysql - 在嵌套集中重复节点名称
- python - AttributeError:“元组”对象没有属性,正在合并 csv
- elasticsearch - 如果我的索引进一步增长,有没有办法自动分区索引
- perl - 根据变量中的值在二进制数之前附加 0
- ios - Xcode 10.2、Swift 5、Command compileSwift 在使用 Release Scheme 构建程序时失败