MongoDB数据库采用bson的格式存储,存储的内容是文档型的。每一条记录就是一个文档,每个文档中的键不一定相同,键的个数也不一定相等,对这样嵌套的文档结构关系,进行分组统计就比较麻烦。比如有以下数据集
{"name": "test","num": {"text": 1,"face": 2}},
{"name": "test","num": {"image": 3,"face": 4}},
{"name": "test","num": {"text":5,"image": 6, "book": 12}},
{"name": "demo","num": {"text": 3,"face": 4}},
{"name": "demo","num": {"image": 7,"face": 8}},
{"name": "demo","num": {"text":5,"image": 5}}
希望获得各产品数量,查询结果为:
{"_id" : "test", "count" : { "image" : 9, "book" : 12, "face" : 6, "text" : 6} }
{"_id" : "demo", "count" : { "image" : 12, "text" : 8, "face" : 12} }
用 MongoDB 脚本实现思路,先将 num 作为数组拆开,转换成文档分别统计,完成后重新分组过滤显示,实现比较复杂。
使用集算器,将数据整理成序表,通过序表分组求和, 再行列转换就可以,这样就方便得多了。
我们将上面描述实现步骤:
1. 在集算器中编写脚本 test.dfx:
A | B | |
1 | =mongo_open("mongodb://localhost:27017/cookie |