如何使用此rethinkdb文档结构更新ids字段?

时间:2013-09-12 08:13:24

标签: rethinkdb rethinkdb-ruby

无法尝试更新文档结构中的ids字段:

[
    [0] {
                   "rank" => nil,
             "profile_id" => 3,
        "daily_providers" => [
            [0] {
                "relationships" => [
                  [0] {
                      "relationship_type" => "friend",
                                  "count" => 0
                  },
                  [1] {
                      "relationship_type" => "acquaintance",
                                    "ids" => [],
                                  "count" => 0
                  }
                ],
                "countries" => [
                   [0] {
                         "country_name" => "United States",
                         "count" => 0
                       },

                   [1] {
                         "country_name" => "Great Britain",
                         "count" => 0
                       }
                ],
                "provider_name" => "foo",
                 "date" => 20130912
            },
            [1] {
                "provider_name" => "bar"
            }
        ]
    }
]

1 个答案:

答案 0 :(得分:1)

在JavaScript中,您可以

r.db('test').table('test').get(3).update(function(doc) {
  return {daily_providers: doc("daily_providers").changeAt(
    0,
    doc("daily_providers").nth(0).merge({
      relationships: doc("daily_providers").nth(0)("relationships").changeAt(
        1,
        doc("daily_providers").nth(0)("relationships").nth(1).merge({
          ids: [1]
        })
      )
    })
  )}
})

哪个成为Ruby

r.db('test').table('test').get(3).update{ |doc|
  {"daily_providers" => doc["daily_providers"].changeAt(
    0,
    doc["daily_providers"][0].merge({
      "relationships" => doc["daily_providers"][0]["relationships"].changeAt(
        1,
        doc["daily_providers"][0]["relationships"][1].merge({
          ids => [1]
        })
      )
    })
  )}
}

您应该为每日提供商提供另一个表并进行连接。 这会让事情变得更简单。