通过javascript检索名称中包含空格的字段

时间:2013-09-27 08:30:53

标签: javascript mongodb

我在使用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 namerelated 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

1 个答案:

答案 0 :(得分:0)

对于那些保持关注的人,我将循环中的函数修改为:

 function(myDoc){
   print(myDoc.title+" "+JSON.stringify(myDoc.extraction.infobox));
 }

现在我将不得不清理一点输出(只是一点点,用于构建光标的投影操作符完成了大部分工作),但它有效!!