【发布时间】:2016-05-05 18:52:37
【问题描述】:
我在一个表中有一个 jsonb“联系人”字段:
- 一个对象,其中每个键都是联系类型,例如邮寄、计费、紧急情况等。这些定义松散。
- #1 中每个键的值是一个数组,其中包含每个类型的 1 个或多个联系人
- #2 中的每个值都是一个包含松散定义字段的对象。
例子:
{
"main": [{
"name": "Bobby Smith",
"email": "bs@example.com",
"telephone": "555-999-0000"
}, {
"name": "Joan Smith",
"email": "js@example.com",
"telephone": "555-999-0002"
}],
"billing": [{
"name": null,
"region": "Arizona",
"address": ["PO BOX 123", "456 Nowhere Road"],
"country": "USA",
"locality": "BigMac",
"postalCode": "90210"
}],
"emergency": [{
"name": "John Cooper",
"email": "jc@example.com",
"telephone": "555-987-0000"
}]
}
我想要一种简单的方法来比较与最外层对象中的键无关的名称字段,以及每个数组中的元素数量。
实际上是这样的: SELECT * FROM clients WHERE contacts#>>'{*, *, name}' = 'John Cooper';
将返回包含上述内容的行,因为它匹配 '{emergency, 0, name}'
【问题讨论】:
标签: postgresql jsonb