我有一个示例json数据,我需要将其添加到mongodb中的不同集合中。但是我不想要整个json数据。例如,
jsondata=
{"widget": {
"debug": "on",
"window": {
"title": "Sample Konfabulator Widget",
"name": "main_window",
"width": 500,
"height": 500
},
"image": {
"src": "Images/Sun.png",
"name": "sun1",
"hOffset": 250,
},
"text": {
"data": "Click Here",
"size": 36,
"style": "bold",
}}
在这个json中我想要一个集合中的窗口键,另一个mongo集合中的simillarly图像键。 所以我在考虑是否可以在一个变量中保存该键值对,然后我可以将该变量添加到集合中。为此我尝试了每个
var jsondat=JSON.parse(jsondata);
for(var exKey in jsondat) {
console.log("entering");
var b=stringdata[exKey].image;
console.log(b);
}
但我无法获得该图像关键数据。这是正确的方法吗?有人可以帮助我解决这个问题。 我的预期结果是: 在一个变量中,窗口键的值应以json格式保存。 Simillarly图像和文本键值在另一个变量中。
感谢。
答案 0 :(得分:0)
为什么不直接从对象中获取窗口和图像,如:
var window= jsondata.widget.window;
var image = jsondata.widget.image;
并将它们保存在mongo db
中db.window.insert(window)
db.image.insert(image)
告诉我如果我理解正确的话。
答案 1 :(得分:0)
我没有发现太多问题。
var jsondat=JSON.parse(jsondata);
for(var exKey in jsondat.widget) {
console.log("entering");
console.log(exKey);
if(exKey === 'image'){
db.image.insert(jsondat.widget[exKey]);
}else if(exKey === 'window'){
db.window.insert(jsondat.widget[exKey]);
}
// or db.getCollection(exKey).insert(jsondat.widget[exKey]);
}
但是我还要补充说,在MongoDB中不需要规范化,你应该使用更多嵌入,因为如果你想整理数据,你以后就不能加入集合。但这是一个普遍的想法,也许在你的要求中你想要不同的收藏。
答案 2 :(得分:0)
你可以通过多种方式实现。
var arr = [];
for(var i in jsondata.widget){
if(typeof(jsondata.widget[i])==='object'){
arr.push(jsondata.widget[i]);
}
};
console.log(arr);
您可以使用unserscore
实用程序库轻松进入
var _=require('underscore');
var arr = [];
_.each(jsondata.widget,function(o){
if(typeof(o)==='object'){
arr.push(o);
}
});
console.log(arr);
现在您可以按索引访问所有对象
<强>输出强>
[ { title: 'Sample Konfabulator Widget',
name: 'main_window',
width: 500,
height: 500 },
{ src: 'Images/Sun.png', name: 'sun1', hOffset: 250 },
{ data: 'Click Here', size: 36, style: 'bold' } ]
尝试获取每个内部键的单独值
var window= jsondata.widget.window;
var image= jsondata.widget.image;
var text= jsondata.widget.text;
修改强>
var obj={
"json": {
"window": {
"title": "sample",
"name": "sam"
},
"image": {
"src": "Images/Sun.png",
"name": "sun1",
"hOffset": 250
}
}
}
console.log(obj.json.window)
result-> {title: "sample", name: "sam"}