我有一批要处理的数据类似:
/* 1 */
{
...
"data" : [
{
"status" : "OK",
"name" : "Administrator",
"description" : "管理计算机(域)的内置帐户"
}
],
"uptime" : ISODate("2017-06-29T06:42:40.934Z")
}
/* 2 */
{
...
"data" : [
{
"address" : "0.0.0.0:135",
"pid" : "920",
"proto" : "TCP"
},
{
"pid" : "4",
"proto" : "TCP",
"address" : "0.0.0.0:445"
}
],
"uptime" : ISODate("2017-07-11T02:48:54.271Z")
}
如上所示,每个 data 内是一个字典的列表,字典内的 key 有可能不尽相同。我想把 data 内部的所有 key 值取出来,生成这样的 list:
["pid", "proto", "address", "status", "name"...]
思考想用 map-reduce 实现:
mr = db.runCommand({
"mapreduce" : "info",
"map" : function() {
for (var item in this.data) {
for (var key in item){
emit(key, null);
}
}
},
"reduce" : function(key, stuff) { return null; },
"out": "keys"
})
db[mr.result].find()
但是出来的数据并非我想要的数据。看了好久的 map-reduce 文档,都没改好。对 mongodb 实在不熟,特来求教。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.