MariaDB의 기존 JSON 개체에 새 개체를 추가하려면 어떻게 해야 합니까?
JSON 필드에는 여러 서브 오브젝트가 포함된 오브젝트가 있습니다.표는 다음과 같습니다.
+---------+----------------------------------------------------------------+
|store_num| fruit_stock |
+---------+----------------------------------------------------------------+
| AL258 | '{"fruits":{"apple":67,"banana":91,"plum":53}}' |
+---------+----------------------------------------------------------------+
| OR419 | '{"fruits":{"apple":109,"banana":44,"plum":98}}' |
+---------+----------------------------------------------------------------+
준비된 문을 사용하여 "AL258" 저장소에 개체 {"mango":45}을(를)이 일을 하면서 몇 가지 문제가 생겼어요.첫 번째는 오브젝트를 다른 오브젝트에 추가하는 것이 생각만큼 간단하지 않다는 것입니다.처음에는 JSON_OBJECT() 함수를 사용하여 mango 객체를 작성해야 했습니다.
JSON_OBJECT("mango", 45)
'{"mango":45}'
그 후 "fruits" 객체의 내용을 가져와 JSON_QUERY() 함수를 사용해야 했습니다.
JSON_QUERY(fruit_stock, '$.fruits')
'{"apple":67, "banana":91, "plum":53}'
그리고 나서 새로운 망고 물체와 과일 물체의 내용물을 합쳐야 했다.삽입할 필드가 이미 존재하는 경우 대체하고 싶기 때문에 JSON_MERGE_PATCH() 함수를 사용해야 했습니다.
JSON_MERGE_PATCH(
JSON_QUERY(fruit_stock, '$.fruits'), -- the contents of fruit_stock: '{"apple":67,"banana":91,"plum":53}'
JSON_OBJECT("mango", 45) -- the new mango object: '{"mango":45}'
)
이제 벌거벗은 오브젝트 필드 '{"apple':67', 'banana':91, 'plum':53, 'mango':45'가 생겼기 때문에 이들을 'fruits' 오브젝트로 결합해야 했습니다.이를 위해서는 JSON_OBJECT() 함수를 사용하여 완전히 새로운 "fruits" 개체를 생성해야 했습니다.
JSON_OBJECT(
'fruits', -- the new fruits object
JSON_MERGE_PATCH( -- the contents of fruit_stock
JSON_QUERY(fruit_stock, '$.fruits'), -- the new mango object
JSON_OBJECT("mango", 45)
)
)
'{"fruits":{"apple":67, "banana":91, "plum":53, "mango":45}}'
저장소를 선택하기 위해 WHERE 절을 추가하는 중...
UPDATE store_table SET fruit_stock =
JSON_OBJECT(
'fruits',
JSON_MERGE_PATCH(
JSON_QUERY(fruit_stock, '$.fruits'),
JSON_OBJECT("mango", 45)
)
)
WHERE HEX(store) = 'AL258';
결과는 다음 표와 같습니다.
+---------+----------------------------------------------------------------+
|store_num| fruit_stock |
+---------+----------------------------------------------------------------+
| AL258 | '{"fruits":{"apple":67,"banana":91,"plum":53,"mango":45}}' |
+---------+----------------------------------------------------------------+
| OR419 | '{"fruits":{"apple":109,"banana":44,"plum":98}}' |
+---------+----------------------------------------------------------------+
질문입니다.이것이 최선의 방법입니까?아니면 MariaDB를 사용하여 보다 효율적이고 읽기 쉬운 옵션이 있습니까?
를 사용하여 추가할 값에 대해 기존 jsons와 유사한 구문을 사용합니다.JSON_MERGE_PATCH()
기능:
UPDATE store_table
SET fruit_stock = JSON_MERGE_PATCH(fruit_stock, '{"fruits":{"mango": 45}}')
WHERE store_num = 'AL258';
언급URL : https://stackoverflow.com/questions/59753566/how-do-you-add-a-new-object-to-an-existing-json-object-in-mariadb
'source' 카테고리의 다른 글
PHP에서 스크립트 실행 시간 추적 (0) | 2022.10.14 |
---|---|
SQL 쿼리를 사용하여 데이터 없이 mysql 테이블 구조를 덤프하려면 어떻게 해야 합니까? (0) | 2022.10.14 |
서비스를 생성할 때 빈 생성자가 없습니다. (0) | 2022.10.14 |
PHP에서 어레이를 개체로 변환하는 방법 (0) | 2022.10.14 |
PHP의 preg_replace와 동등한 JavaScript (0) | 2022.10.14 |