मारियाडीबी में, JSON_INSERT()
एक अंतर्निहित फ़ंक्शन है जो JSON दस्तावेज़ में डेटा सम्मिलित करता है, और परिणाम देता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
JSON_INSERT(json_doc, path, val[, path, val] ...)
जहां json_doc
JSON दस्तावेज़ है, path
वह पथ है जहां डेटा डाला जाना चाहिए, और val
उस पथ पर डाला जाने वाला मान है।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SET @json_document = '
{
"name": "Wag"
}
';
SELECT JSON_INSERT(@json_document, '$.type', "Dog");
परिणाम:
+----------------------------------------------+ | JSON_INSERT(@json_document, '$.type', "Dog") | +----------------------------------------------+ | {"name": "Wag", "type": "Dog"} | +----------------------------------------------+
यहाँ मैंने "type": "Dog"
. डाला है दस्तावेज़ में।
इस मामले में, मैंने $.type
. का इस्तेमाल किया पथ के रूप में। इसलिए, type
कुंजी है और Dog
मूल्य है।
जब पथ पहले से मौजूद हो
JSON दस्तावेज़ में पहले से मौजूद पथ को पास करने से मूल दस्तावेज़ अपरिवर्तित रहता है।
उदाहरण:
SET @json_document = '
{
"name": "Wag"
}
';
SELECT JSON_INSERT(@json_document, '$.name', "Bark");
परिणाम:
+-----------------------------------------------+ | JSON_INSERT(@json_document, '$.name', "Bark") | +-----------------------------------------------+ | {"name": "Wag"} | +-----------------------------------------------+
सरणी सम्मिलित करना
JSON दस्तावेज़ में सरणी डालने का एक उदाहरण यहां दिया गया है:
SET @json_document = '
{
"name" : "Wag"
}
';
SELECT JSON_INSERT(@json_document, '$.scores', '[ 8, 7, 9 ]');
परिणाम:
+--------------------------------------------------------+ | JSON_INSERT(@json_document, '$.scores', '[ 8, 7, 9 ]') | +--------------------------------------------------------+ | {"name": "Wag", "scores": "[ 8, 7, 9 ]"} | +--------------------------------------------------------+
सरणी में शामिल करना
यहां JSON_INSERT()
का उपयोग करने का एक उदाहरण दिया गया है किसी सरणी में डेटा जोड़ने के लिए:
SET @json_document = '
{
"_id" : 1,
"awards" : [ "Top Dog", "Best Dog" ]
}
';
SELECT JSON_INSERT(@json_document, '$.awards[2]', "Biggest Dog");
परिणाम:
+--------------------------------------------------------------+ | JSON_INSERT(@json_document, '$.awards[2]', "Biggest Dog") | +--------------------------------------------------------------+ | {"_id": 1, "awards": ["Top Dog", "Best Dog", "Biggest Dog"]} | +--------------------------------------------------------------+
हालाँकि, हालांकि इसने इस उदाहरण के लिए ठीक काम किया, यह आसानी से विफल हो सकता था। उदाहरण के लिए, यदि हम सरणी में किसी भिन्न स्थान पर मान डालने का प्रयास करते हैं, तो यह काम नहीं करता है:
SET @json_document = '
{
"_id" : 1,
"awards" : [ "Top Dog", "Best Dog" ]
}
';
SELECT JSON_INSERT(@json_document, '$.awards[1]', "Biggest Dog");
परिणाम:
+-----------------------------------------------------------+ | JSON_INSERT(@json_document, '$.awards[1]', "Biggest Dog") | +-----------------------------------------------------------+ | {"_id": 1, "awards": ["Top Dog", "Best Dog"]} | +-----------------------------------------------------------+
किसी सरणी में मान सम्मिलित करने के लिए, JSON_ARRAY_INSERT()
. का उपयोग करें इसके बजाय कार्य करें।
इसके अलावा, हालांकि हम उपरोक्त उदाहरण में एक सरणी के लिए एक मान जोड़ने में सक्षम थे, आप शायद JSON_ARRAY_APPEND()
का उपयोग करना बेहतर समझते हैं। फ़ंक्शन, क्योंकि यह विशेष रूप से उस उद्देश्य के लिए डिज़ाइन किया गया है।
नेस्टेड ऑब्जेक्ट
किसी अन्य ऑब्जेक्ट के अंदर नेस्टेड ऑब्जेक्ट में मान डालने का एक उदाहरण यहां दिया गया है:
SET @json_document = '
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"weight" : 20,
"awards" : {
"Florida Dog Awards" : "Top Dog",
"New York Marathon" : "Fastest Dog"
}
}
}
';
SELECT JSON_INSERT(
@json_document,
'$.details.awards.Sumo 2020',
'Biggest Dog'
);
परिणाम:
{"_id": 1, "name": "Wag", "details": {"type": "Dog", "weight": 20, "awards": {"Florida Dog Awards": "Top Dog", "New York Marathon": "Fastest Dog", "Sumo 2020": "Biggest Dog"}}}
परिणाम को सुंदर बनाएं
हम JSON_DETAILED()
. का उपयोग कर सकते हैं परिणाम को पढ़ने में आसान बनाने के लिए कार्य करें:
SET @json_document = '
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"weight" : 20,
"awards" : {
"Florida Dog Awards" : "Top Dog",
"New York Marathon" : "Fastest Dog"
}
}
}
';
SELECT
JSON_DETAILED(
JSON_INSERT(
@json_document,
'$.details.awards.Sumo 2020',
'Biggest Dog'
)
);
परिणाम:
{ "_id": 1, "name": "Wag", "details": { "type": "Dog", "weight": 20, "awards": { "Florida Dog Awards": "Top Dog", "New York Marathon": "Fastest Dog", "Sumo 2020": "Biggest Dog" } } }
अशक्त तर्क
अगर json_document
में से कोई एक या path
तर्क हैं NULL
, परिणाम NULL
. है :
SELECT
JSON_INSERT(null, '$.type', 'Dog'),
JSON_INSERT('{"a":1}', null, 'Dog');
परिणाम:
+------------------------------------+-------------------------------------+ | JSON_INSERT(null, '$.type', 'Dog') | JSON_INSERT('{"a":1}', null, 'Dog') | +------------------------------------+-------------------------------------+ | NULL | NULL | +------------------------------------+-------------------------------------+
हालांकि, अगर value
तर्क NULL
है , कुंजी को निर्दिष्ट पथ पर null
. के मान के साथ जोड़ा जाता है :
SELECT JSON_INSERT('{"a":1}', '$.type', null);
परिणाम:
+----------------------------------------+ | JSON_INSERT('{"a":1}', '$.type', null) | +----------------------------------------+ | {"a": 1, "type": null} | +----------------------------------------+
गलत पैरामीटर गणना
तर्क न देने से त्रुटि होती है:
SELECT JSON_INSERT();
परिणाम:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_INSERT'
जब आप बहुत कम या बहुत अधिक तर्क देते हैं तो ऐसा ही होता है:
SELECT JSON_INSERT('{ "a": 1}');
परिणाम:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_INSERT'
समान कार्य
JSON_REPLACE()
फ़ंक्शन मौजूदा डेटा को अपडेट कर सकता है।
JSON_SET()
फ़ंक्शन मौजूदा डेटा को अपडेट कर सकता है और नया डेटा सम्मिलित कर सकता है। तो JSON_SET()
JSON_INSERT()
जैसा है और JSON_REPLACE()
एक समारोह में।