【发布时间】:2017-05-09 14:05:59
【问题描述】:
postgres# select * from something;
标识 |姓名 |随机 ID |
位置 |
created_at |更新时间 |类型 |
详情----+----------+------------------------------- --------+------------------------------ -------------------------------------------------- -----------------------------------------+-------- --------+----------------+-----------+ -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------------------------------
15 |一个 | 6abddaba-6b6e-4433-ae3b-698a16971704 |一些http://one.tar.xz | 2017-05-02 06:55:36.146826 | 2017-05-02 06:55:48.154355 |开放堆栈 | {"os": [{"release": "Fedora"}], "openstack_version": [{"buildhost": “openstack.com”,“package_name”:“nova”,“package_version”:1.2, “openstack_version”:8}],“架构”:[{“内核”:“x86_64”}], “volume_drivers”:[{“drivers”:“ABCDriver”}],“network_drivers”:[], “network_plugins”:[],“shared_file_system_drivers”:[]}
16 |二 | 9b13fb4c-2e20-4336-b486-473b50948ee1 |一些http://two.tar.xz | 2017-05-02 06:55:52.219204 | 2017-05-02 06:56:03.212226 |开放堆栈 | {"os": [{"release": "Fedora"}], "openstack_version": [{"buildhost": “openstack.com”,“package_name”:“nova”,“package_version”:1.2, “openstack_version”:8}],“架构”:[{“内核”:“x86_64”}], “volume_drivers”:[{“drivers”:“XYZDriver”}],“network_drivers”:[], “network_plugins”:[],“shared_file_system_drivers”:[]}
17 |三 | 119eaf5f-166d-4ddd-a4db-d1f56bbf8779 | 一些http://three.tar.xz | 2017-05-02 06:56:58.009536 | 2017-05-02 06:57:06.538191 |开放堆栈 | {“操作系统”:[{“发布”: "Fedora"}], "openstack_version": [{"buildhost": "openstack.com", “package_name”:“nova”,“package_version”:1.3,“openstack_version”: 9}],“架构”:[{“内核”:“x86_64”}],“volume_drivers”:[], “network_drivers”:[{“drivers”:“linuxbridge”}],“network_plugins”: [{"plugins": "ml2"}], "shared_file_system_drivers": []}
19 |四 | 139eaf5f-166d-4ddd-a4db-d1f56bbf8779 |一些http://four.tar.xz | 2017-05-02 06:56:58.009536 | 2017-05-02 06:57:06.538191 |开放堆栈 | {"os": [{"release": "Fedora"}], "openstack_version": [{"buildhost": “openstack.com”,“package_name”:“nova”,“package_version”:1.3, “openstack_version”:9}],“架构”:[{“内核”:“x86_64”}], “volume_drivers”:[],“network_drivers”:[{“drivers”:“bridge”}], “network_plugins”:[{“plugins”:“pqrst”}], “shared_file_system_drivers”:[]}
我想在名为“something”的表中查找条目,其中“volume_drivers”可以是“ABCDriver”或“XYZDriver”,network_drivers 可以是“linuxbridge”。
因此,根据上述条件,我的结果应包含 id 为 15、16、17 的条目。
我尝试使用 postgres shell 执行相同的操作,并且成功了,但是,我无法将相同的 postgres 查询映射到 ruby。
select * from something where details->'volume_drivers' IN ('[{"drivers": "ABCDriver"}]','[{"drivers": "XYZDriver"}]') OR details->'network_drivers' IN ('[{"drivers": "linuxbridge"}]');
我尝试如下至少获取 ABCDriver 的条目但一无所获:(
Something.where('details->volume_drivers @> ?', [{"drivers": "ABCDriver"}]);
另外,如果有人有更好的建议来检索相同的内容,请告诉我。
【问题讨论】: