MongoDB - JSON parsing
MongoDB - JSON parsing
我在MongoDB中有一个有效的JSON结构,需要在运行时进行更改。以下是单个集合中 3 个此类独立文档的有效快照:-
{
company : "ABC",
tags : ["ADMIN", "QA"],
year : 2010,
Project : [{
Domain : "Telecom",
tags : ["DEV", "ADMIN"],
size : 15
}, {
Domain : "Retail",
tags : ["ADMIN", "DEV"],
size : 35
}, {
Domain : "Finance",
tags : ["ADMIN"],
size : 25
}
]
}
{
company : "ABC",
tags : ["QA"],
year : 2011,
Project : [{
Domain : "Telecom",
tags : ["DEV"],
size : 15
}, {
Domain : "Retail",
tags : ["ADMIN", "DEV"],
size : 35
}, {
Domain : "Finance",
tags : ["ADMIN"],
size : 25
}
]
}
{
company : "ABC",
tags : ["QA"],
year : 2012,
Project : [{
Domain : "Telecom",
tags : ["DEV", "ADMIN"],
size : 15
}, {
Domain : "Retail",
tags : ["ADMIN", "DEV"],
size : 35
}, {
Domain : "Finance",
tags : ["ADMIN"],
size : 25
}
]
}
该结构需要将这 3 个文档合并为 1,然后按以下方式显示:-
{
"company" : "ABC",
"tags" : ["ADMIN", "QA"],
"period" : {
[{
year : 2010,
Project : [{
Domain : "Telecom",
tags : ["DEV", "ADMIN"],
size : 15
}, {
Domain : "Retail",
tags : ["ADMIN", "DEV"],
size : 35
}, {
Domain : "Finance",
tags : ["ADMIN"],
size : 25
}
]
}
],
[{
year : 2011,
Project : [{
Domain : "Telecom",
tags : ["DEV"],
size : 15
}, {
Domain : "Retail",
tags : ["ADMIN", "DEV"],
size : 35
}, {
Domain : "Finance",
tags : ["ADMIN"],
size : 25
}
]
}
],
[{
year : 2012,
Project : [{
Domain : "Telecom",
tags : ["DEV", "ADMIN"],
size : 15
}, {
Domain : "Retail",
tags : ["ADMIN", "DEV"],
size : 35
}, {
Domain : "Finance",
tags : ["ADMIN"],
size : 25
}
]
}
]
}
}
我知道我可以使用地图减少并完成这项工作。但我认为我应该尝试为此编写一个 Java 脚本函数,然后可以在需要这样做时调用它。
假设可以使用集合调用以下函数,则记录集将传递给下面的函数。
`var curlprojects = function()
{
var arrSyn = new Array();
var JSONString = "";
var doc;
var parent;
var arrTop = new Array();
while (myCursor.hasNext())
{
doc = myCursor.next();
parent = doc.companyName;
var fulltext = "{'"year'":" + tojson(doc.year) + ",'"project'":" + tojson(doc.project) + "}";
JSONString = JSONString + fulltext;
};
arrSyn.push(JSONString);
var outext = "{'"period'":" + JSONString + "}";
print(outext);
} `
问题来了。尽管文本看起来像是 JSON,就像我生成或打印出来时一样,但它不会打印到屏幕上。
最后一行 print(outext) 显示一些奇怪的消息,询问我是否希望显示 181 个首选项,如果我说是 - 它列出了 java 脚本中的所有保留字!!
任何建议将不胜感激。
作为使用MapReduce或Javascript的替代方法,您可能需要考虑使用聚合框架。
你想要的输出可以在 Mongo shell 中生成:
db.test.aggregate([
//optional: match a single company
{$match:{"company":"ABC"}},
//expand the "tags" array
{$unwind:"$tags"},
//"group by" stage:
{$group: {
//group by company
_id:"$company",
//add unique tags into the "tags" array
tags: {$addToSet:"$tags"},
//add the "Project" details into the "period" array
period: {$push: {year:"$year", Project:"$Project"}}
}}
])
相关文章:
- jQuery匹配JSON对象的部分文本
- 在循环中分配json值时,值被覆盖
- 需要帮助设置json数组
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 使用JQuery解析JSON嵌套数组
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- Json javascript parsing
- MongoDB - JSON parsing
- Go vs JavaScript JSON parsing
- Parsing JSON stream
- jquery parsing json
- Xcode Javascript JSON parsing
- JavaScript: parsing JSON
- Parsing JSON with Javascript
- javascript JSON parsing
- Json Parsing html
- Angularjs/Ionic App json parsing