Ruby / Rails在大型JSON数组中搜索并通过多个键查找记录

问题描述 投票:2回答:3

我有一个非常大的数据集。以说明为例:

users = [
    {
        username: "Bill",
        gender: "Male",
        details: {
            city: "NY"
        }
    },
    {
        username: "Mary",
        gender: "Female",
        details: {
            city: "LA"
        }
    }
]

我需要一种快速的方法来通过多个键中的多个值来搜索多个记录。

我有点分隔的键列表

keys = ["gender", "details.city"]

现在我需要做这样的事情(用伪代码编写):

my_users = users.any? {|user|
  keys.each do |key|
    user.key == "NY"
  end
}

我知道这行不通。它不起作用的原因之一是我的键列表是点分隔的。因此,我想我可以将其拆分为键数组,例如['gender']和['details] ['city'],或使用类似以下方法的方法将用户哈希转换为点分隔的对象: >

def to_o
  JSON.parse to_json, object_class: OpenStruct
end

底线-我需要一种在大型JSON数组中搜索并通过多个键查找记录的方法,它需要快速:)有什么建议吗?

我有一个非常大的数据集。为了举例说明,请以以下示例为例:users = [{用户名:“ Bill”,性别:“ Male”,详细信息:{city:“ NY”}},{...

ruby-on-rails json ruby
3个回答
3
投票

我希望这种方法像您想要的那样工作


0
投票

对于线性搜索,德米尔的解决方案是一个很好的解决方案。


0
投票

您可以使用在Ruby 2.3.0中引入的Hash#dig动态遍历哈希:

© www.soinside.com 2019 - 2024. All rights reserved.