我正在使用Postgres JSONB,以便在一个字段中为一个复杂系统存储大量属性。
我有一个字段,称为属性和属性确实有对象树。
以下是属性中的一小段数据。
{
"urls": [],
"games": false,
"images": [],
"rating": null,
"founded": 0,
"bannedIn": ["00000000-0000-0000-8888-000000000001",
"00000000-0000-0000-8888-000000000002"],
"comments": "",
"chat": false
}
在表格中我有一些被禁止的对象设置为一些guid,一些对象有空数组,有些对象根本没有bannedIn属性。
现在我试图获取bannedIn包含"00000000-0000-0000-8888-000000000001"
(WORKS)
当我尝试获取bannedIn不包含"00000000-0000-0000-8888-000000000001"
(WORKS)的每一行
但是当我查询计算所有属性没有禁用的所有内容时,它会以0计数回退,即使我有1K对象没有禁止使用。
WORKS
$builder = $entityManager->createQueryBuilder()
->select('e')
->from(Entity::class, 'e')
->where('e.otherObject = :guid')->setParameter('guid', $guid)
->andWhere('GET_JSON_FIELD(e.properties, \'bannedIn\') LIKE ?1')
->setParameter(1, '%00000000-0000-0000-8888-000000000001%');
有没有办法查询jsonb哪里没有key?
我也试过以下,没用。
的?通过调用函数jsonb_exists(column_name, value)