我只是一个项目的 Ruby 新手 - 我需要使用 aws dynamodb 连接两个表。基本上相当于sql left join。但是由于 dynamodb 显然不支持我似乎需要在阵列级别实现它。
目前我正在查询一个很好的表,但我需要引入另一个表,但我花了很多时间找到一个简单的 ruby 示例而不使用 ActiveRecord(以避免对预先存在的代码)。
client = Aws::DynamoDB::Client.new
response = client.scan(table_name: 'db_current')
@items = response.items
假输出以保护无辜者
数据库当前
{"machine_id"=>"pc-123435", "type_id"=>"t-56778"}
数据库类型
{"description"=>"Dell 5 Dev Computer", "Name"=>"Dell", "type_id"=>"t-56778"}
我想我可能必须做两个:
client = Aws::DynamoDB::Client.new
db_c = client.scan(table_name: 'db_current')
@c_items = db_c.items
client = Aws::DynamoDB::Client.new
db_t = client.scan(table_name: 'db_type')
@t_items = db_c.joins(db_t['type_id']) <=== then merge them
这里。
where I'll ultimately display description/name/machine_id
但遗憾的是没有运气。
我正在寻找建议。我宁愿让它简单到真的 理解(这听起来可能不合理,我现在还不想引入 ActiveRecord,除非我以后会拥有这个项目)。
最佳答案
我最终是这样做的。对于那些熟悉 Ruby 的人来说,可能有一个更优雅的解决方案……但我不是。
基本上,对于第一个哈希数组(表)中的每个项目,我使用该项目的 ID 来过滤第二个哈希数组的项目。在此过程中合并它们。然后附加到我将用于我的 UI 的最终目的地。
@c_by_id = Array.new
@b_items.each do |item|
pjoin = @c_items.first {|h| h['b_id'] == item['b_id']}
newjoin = item.merge(pjoin)
@c_by_id.append(newjoin)
end
关于ruby-on-rails - 使用 Ruby on Rails 连接两个哈希表 (dynamoDb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41918985/