我在使用javascript脚本检索存储在MongoDB中的字段时遇到了问题。
在网络爬网后自动存储了数据库。这是一个条目的例子:
{
"_id" : ObjectId("51ed0b2e12fd5629bf380355"),
"title" : "Robert",
"extraction" : {
"infobox" : [
{
"given name" : {
"region" : "Germanic",
"articles" : "Robert",
"pronunciation" : "{{IPAc-en|ˈ|r|ɒ|b|ər|t}}",
"related names" : "Rob, Robbie, Robin, Rupert, Bob, Bobby, Bert, Rahbert",
"name" : "Robert",
"gender" : "Male",
"meaning" : "\"fame-bright\""
}
}
]
}
}
我必须重试所有情侣标题 - 相关名称。我写了这个javascript:
db = connect("localhost:27017/Test");
var nameCursor = db.Test.find({"extraction.infobox.given name.related names":{$exists:true}},{"title":1,"extraction.infobox.given name.related names":1});
nameCursor.forEach(
function(myDoc) {
print(myDoc.title+" "+extraction.infobox.given name.related names );
}
);
quit();
由于given name
和related names
字段中的空格而必须打印时,这当然无法正常工作。
有没有办法逃避空间,或至少打印信息框 json字符串,我最终会解析?
提前致谢!
P.S。我已经知道下次我必须用_
替换字段键中的空格。提取需要很长时间,现在我非常匆忙:))
在Sammaye评论后编辑
使用extraction.infobox['given name']['related names']
,它会给我错误
JavaScript execution failed: TypeError: Cannot read property 'related names' of undefined at names.js:L14
当然,如果我使用extraction.infobox['given name']
打印
Robert undefined
答案 0 :(得分:0)
对于那些保持关注的人,我将循环中的函数修改为:
function(myDoc){
print(myDoc.title+" "+JSON.stringify(myDoc.extraction.infobox));
}
现在我将不得不清理一点输出(只是一点点,用于构建光标的投影操作符完成了大部分工作),但它有效!!