On 15 February 2015 at 03:06, Andrew Dunstan <and...@dunslane.net> wrote:
> > Attached is a patch to provide a number of very useful facilities to jsonb > that people have asked for. These are based on work by Dmitry Dolgov in his > jsonbx extension, but I take responsibility for any bugs. > > The facilities are: > > new operations: > > concatenation: jsonb || jsonb -> jsonb > deletion: jsonb - text -> jsonb > deletion: jsonb - int -> text > > new functions: > > produce indented text: jsonb_indent(jsonb) -> text > change an element at a path: jsonb_replace(jsonb, text[], jsonb) -> jsonb. > > > It would be relatively trivial to add: > > delete an element at a path: jsonb_delete(jsonb, text[]) -> json > Would this support deleting "type" and the value 'dd' from the following?: {"a": 1, "b": 2, "c": {"type": "json", "stuff": "test"}, "d": ["aa","bb","cc","dd"]} > > and I think we should do that for the sake of completeness. > > The docs might need a little extra work, and the indent code definitely > needs work, which I hope to complete in the next day or two, but I wanted > to put a stake in the ground. > This is high on my wanted list, so thanks for working on this. Seems to work well for me with a few tests. Is there a way to take the json: '{"a": 1, "b": 2, "c": {"type": "json", "stuff": "test"}, "d": ["aa","bb","cc","dd"]}' and add "ee" to "d" without replacing it? I can think of ways of currently doing it, but it's very convoluted just for pushing a value to an array. Also, are there any plans to support the following?: jsonb - text[] # Provide list of keys to delete in array jsonb - jsonb # Deduplicate key:value pairs jsonb && jsonb # Return overlapping jsonb (opposite of jsonb - jsonb) Thanks Thom