0

我在使用 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 字符串?

提前致谢!

PS 我已经知道下次我将不得不用 . 替换字段键中的空格_。提取需要很长时间,现在我很着急:)

在 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
4

1 回答 1

0

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

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

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

于 2013-09-27T10:52:55.747 回答