2016-04-22 20 views
1

我正在使用ruby驅動程序來重新思考數據庫,我遇到了一些嵌套有數組的元素的問題。使用Ruby驅動程序在Rethinkdb的Reql中創建一個複雜的查詢

我有我的數據結構是這樣

[{"family_name"=>"Adam"}, 
{"family_name"=>"Bobby"}, 
{"family_name"=>"Crissy", 
    "groups"=> 
    [{"logo_url"=>"https://www.logourl.com/1111.png", 
    "name"=>"Sample Name 1", 
    "profile_url"=>"https://www.profileurl.com/groups?gid=1111"}, 
    {"logo_url"=>"https://www.logourl.com/2222.png", 
    "name"=>"Sample Name 2", 
    "profile_url"=>"https://www.profileurl.com/groups?gid=2222"}, 
    {"logo_url"=>"https://www.logourl.com/3333.png", 
    "name"=>"Sample Name 3", 
    "profile_url"=>"https://www.profileurl.com/groups?gid=3333"}, 
    ]}, 
{"family_name"=>"Bobby"}, 
{"family_name"=>"Hillton", 
    "groups"=> 
    [{"logo_url"=>"https://www.logourl.com/4444.png", 
    "name"=>"Sample Name 1", 
    "profile_url"=>"https://www.profileurl.com/groups?gid=4444"}, 
    {"logo_url"=>"https://www.logourl.com/5555.png", 
    "name"=>"Sample Name 2", 
    "profile_url"=>"https://www.profileurl.com/groups?gid=55555"}, 
    {"logo_url"=>"https://www.logourl.com/6666.png", 
    "name"=>"Sample Name 3", 
    "profile_url"=>"https://www.profileurl.com/groups?gid=12345"}, 
    ]}] 

期望的結果是返回擁有「PROFILE_URL」鏈接,與「12345」結尾的行。使用Ruby和JavaScript的組合,我已經嘗試這樣的:

'r.table("profiles").filter{ |row| row['groups'].contains(r.js('function(group) { return group('profile_url').match("12345$") }'))}.run(conn)' 

但是,它仍然沒有返回結果,是否有與Ruby驅動程序使用一個明確的辦法???

期望的結果將是

[{"family_name"=>"Hillton", 
    "groups"=> 
    [{"logo_url"=>"https://www.logourl.com/4444.png", 
    "name"=>"Sample Name 1", 
    "profile_url"=>"https://www.profileurl.com/groups?gid=4444"}, 
    {"logo_url"=>"https://www.logourl.com/5555.png", 
    "name"=>"Sample Name 2", 
    "profile_url"=>"https://www.profileurl.com/groups?gid=55555"}, 
    {"logo_url"=>"https://www.logourl.com/6666.png", 
    "name"=>"Sample Name 3", 
    "profile_url"=>"https://www.profileurl.com/groups?gid=12345"}, 
    ]}] 

請在此先感謝幫助和! :d

回答

3

我認爲這會做你想要什麼:

r.table('profiles').filter {|row| 
    row['groups'].contains {|group| 
    group['profile_url'].match('12345$') 
    } 
} 
+0

謝謝你,就像一個魅力〜 – noobiehacker

相關問題