0

(申し訳ありませんが、質問のタイトルは非常に厄介です) こんにちは、次のようなデータを含む 2 つのテーブルがあります。

//friend_group table
{
    .....
    {
       "id":"user-me"//owner id 
       "FriendGroups":[
             {"id":"friendGroup_1","Members":["friend_1","friend_2"]},
             {"id":"friendGroup_2","Members":["friend_1","friend_3","friend_4"]},
        ]
    }
    .....
}

//friend table
{
    .....
    {"id":"friend_1","Skills":["java","c++"]}
    {"id":"friend_2","Skills":["python","ruby"]}
    {"id":"friend_3","Skills":["golang","c++"]}
    {"id":"friend_4","Skills":["javascript","ruby"]}
    ....
}

そして、グループ "friendGroup-2" に割り当てられ、スキル "c++" を持つ "user-me" の友人を照会したい場合、特定のデータ結果は次のようになります。

["friend_1","friend_3"]

そして私はこのように試しました:

r.db("test").table("friend").filter(function(u){
    return r.table("friendGroup").get("user-me")("FriendGroups").filter(function(fg){
      return fg("id").eq("friendGroup_2").and(fg("Members").contains(u("id")))
})}).pluck("id")

私のスクリプトの問題は何ですか?

私のスクリプトを更新してください:

r.db("test").table("friend").filter(function(u){
    return r.table("friendGroup").get("user-me")("FriendGroups").filter(function(fg){
      return fg("id").eq("friendGroup_2").and(fg("Members").contains(u("id")))
})}).filter(function(u){return u("Skills").contains("skill-2")}).pluck("id").pluck("id")
4

1 に答える 1

0

return の "filter" を "contains" に変更すると、この問題が解決することがわかりました。適切なスクリプトは次のようになります。

r.db("test").table("friend").filter(function(u){
return r.table("friendGroup").get("user-me")("FriendGroups").**contains**(function(fg){
  return fg("id").eq("friendGroup_2").and(fg("Members").contains(u("id")))
})}).filter(function(u){return u("Skills").contains("skill-2")}).pluck("id").pluck("id")
于 2015-08-06T09:21:22.863 に答える