2016-04-22 11 views
1

Ich benutze den Ruby-Treiber zum Umdenken db und ich stoße auf ein Problem mit verschachtelten Elementen, die Arrays hat.Verwenden von Ruby-Treiber zum Erstellen einer komplizierten Abfrage in Rethinkdb Reql

Ich habe meine Daten wie folgt strukturiert

[{"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"}, 
    ]}] 

Das gewünschte Ergebnis ist die Zeile zurückzugeben, die ‚profile_url‘ Link hat, die mit „12345“ endet.

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

Es ist jedoch noch nicht das Ergebnis der Rückkehr gibt es eine klare Art und Weise zu verwenden, um es mit den Ruby-Treiber ???: Um diese mit einer Mischung aus Ruby und Javascript, ich habe versucht,

würde das gewünschte Ergebnis

sein
[{"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"}, 
    ]}] 

Bitte helfen Sie und Dank im Voraus !!! : D

Antwort

3

ich denke, das tun, was Sie wollen:

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

Danke, wirkt wie ein Zauber ~ – noobiehacker