2014-02-24 39 views
8

说我有这个JSON(样本 - 一个真实的例子可以在apple itunes rss feed找到)存储在RethinkDB表名为“测试”:查询嵌套对象的数组

{ 
    "feed": { 
     "entry": [ 
      { 
       "title": { 
        "label": "Some super duper app" 
       }, 
       "summary": { 
        "label": "Bla bla bla..." 
       } 
      }, 
      { 
       "title": { 
        "label": "Another awsome app" 
       }, 
       "summary": { 
        "label": "Lorem ipsum blabla..." 
       } 
      } 
     ] 
    } 
} 

我怎么会写ReQL在JavaScript中查询以获取所有条目的摘要entry)其中标题包含字符串“xyz”?我期望查询结果返回匹配的条目对象的数组,而不是匹配数组的数据源

回答

11

如果我正确理解你想要做什么,这个查询应该是你在找什么:

r.table("feeds").concatMap(function(doc) { 
    return doc("feed")("entry") 
}).filter(function(entry) { 
    return entry("title")("label").match("xyz") 
}) 
+0

测试工作。谢谢@neumino! – codeclash

+0

@ pneumino,如果在顶层有“id”,如: {id:1,feed:....}如何在匹配这个文本后得到这个'id'?例如:获取feed-> entry-> title->标签匹配“xyz”的文档的所有id?反正有这样做吗? –

+0

你可以用'(“id”)'或map(函数(doc){return doc(“id”)})来连锁@ – neumino