使用 Postgres 和 Typeorm 的 jsonb 中的数组长度
Length of array inside a jsonb with Postgres and Typeorm
我正在使用 NodeJS、PostgreSQL 和 Typeorm 开发应用程序。我的数据库中有一列“数据”,它是 jsonb 类型。每个元素都具有以下结构:
{
"a": [
{ "b": "some-text" },
{ "b": "some-text" },
...
]
}
我想要 select 所有行,其中“a”数组的大小为 N 并且数组中第一个对象的“b”字段的值为 X。
到目前为止,我尝试首先使用 jsonb_array_length
来获取大小查询,如下所示:
await this.createQueryBuilder('entity')
.where(`jsonb_array_length("entity".data->>'a') = 5`)
.getMany();
但是,这会引发错误:
No function matches the given name and argument types. You might need to add explicit type casts.
如有任何帮助,我们将不胜感激。
使用 ->
运算符获取 josnb 而不是 ->>
生成文本。
您的 where
表达式应该是这样的:
jsonb_array_length("entity".data -> 'a') = 5
我正在使用 NodeJS、PostgreSQL 和 Typeorm 开发应用程序。我的数据库中有一列“数据”,它是 jsonb 类型。每个元素都具有以下结构:
{
"a": [
{ "b": "some-text" },
{ "b": "some-text" },
...
]
}
我想要 select 所有行,其中“a”数组的大小为 N 并且数组中第一个对象的“b”字段的值为 X。
到目前为止,我尝试首先使用 jsonb_array_length
来获取大小查询,如下所示:
await this.createQueryBuilder('entity')
.where(`jsonb_array_length("entity".data->>'a') = 5`)
.getMany();
但是,这会引发错误:
No function matches the given name and argument types. You might need to add explicit type casts.
如有任何帮助,我们将不胜感激。
使用 ->
运算符获取 josnb 而不是 ->>
生成文本。
您的 where
表达式应该是这样的:
jsonb_array_length("entity".data -> 'a') = 5