如何在 Postgres、Activerecord、Rails 5 中查询空 jsonb 数组

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

我有一个

Post
模型,其列由以下迁移定义:

add_column :posts, :comments, :jsonb, default: []

add_index :posts, :comments, using: :gin

我想知道要运行的查询,以便计算所有具有默认空数组作为

Posts
comments

postgresql activerecord ruby-on-rails-5 jsonb
3个回答
12
投票
Post.where("comments = '[]'").count

1
投票

您可以通过将 json 转换为字符串并计算长度来完成此操作。空 json 将返回 2。这适用于 {} 和 []。 例如。返回非空评论

Post.where("length(comments::text) > 2").count

0
投票

对于 Postgresql > 11,这也是一个可能的答案

Post.where('jsonb_array_length(comments) > 0')
© www.soinside.com 2019 - 2024. All rights reserved.