如何使用[]运算符重新执行此命令以进行嵌套?

时间:2016-10-08 12:20:09

标签: json rethinkdb

我刚开始使用RethinkDB,我喜欢它。我已经成功地使用此命令来处理json数据:

r.db("test").table("gleif").filter({"lei:LEIRecord": {
"lei:Entity": { 
"lei:HeadquartersAddress": { 
        "lei:City":  "Toronto"  
}
}
}
}).pluck({"lei:LEIRecord": {"lei:Entity": "lei:LegalName"}})

但是这会以类似json的方式返回数据。我想使用[]运算符来简化查询并查看它返回的数据类型。但是,我似乎无法让[]运算符工作。我相信你可以阅读它,但我在多伦多市过滤,但只想要返回LegalName。谢谢。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,那么对于doc

{id: "toront", 
  "lei:LEIRecord": {
    "lei:Entity": { 
      "lei:LegalName": "TorontoTest",
      "lei:HeadquartersAddress": { 
        "lei:City":  "Toronto"  
      }
    }
  }
}

使用您想要的查询代替此

[{"id": "toront" ,
    "lei:LEIRecord": {
        "lei:Entity": {
            "lei:HeadquartersAddress": {
                "lei:City": "Toronto"
            } ,
            "lei:LegalName": "TorontoTest"
        }
    }  
}]

只获取“lei:LegalName”:

[{"lei:LegalName":"TorontoTest"}]

如果是,那么你可以使用map:

r.db("test").table("gleif").filter(
  {"lei:LEIRecord": {
    "lei:Entity": { 
      "lei:HeadquartersAddress": { 
        "lei:City":  "Toronto" 
      }
    }
  }
}).map(function(doc){
  return {"lei:LegalName": doc("lei:LEIRecord")("lei:Entity")("lei:LegalName")};
})

如果你想得到一些名字,比如:

["TorontoTest"]

您可以使用此查询:

r.db("test").table("gleif").filter(
  {"lei:LEIRecord": {
    "lei:Entity": { 
      "lei:HeadquartersAddress": { 
        "lei:City":  "Toronto" 
      }
    }
  }
}).map(function(doc){
  return doc("lei:LEIRecord")("lei:Entity")("lei:LegalName");
})