مشغلات JSON
تدعم Milvus مشغلات متقدمة للاستعلام عن حقول JSON وتصفيتها، مما يجعلها مثالية لإدارة البيانات المعقدة والمنظمة. تتيح هذه المشغلات الاستعلام الفعال للغاية عن مستندات JSON، مما يسمح لك باسترداد الكيانات بناءً على عناصر أو قيم أو شروط محددة داخل حقول JSON. سيرشدك هذا القسم إلى كيفية استخدام مشغلي JSON في Milvus، مع تقديم أمثلة عملية لتوضيح وظائفهم.
لا يمكن لحقول JSON التعامل مع البنى المعقدة والمتداخلة وتتعامل مع جميع البنى المتداخلة كسلاسل عادية. ولذلك، عند العمل مع حقول JSON، يُنصح بتجنب التداخل العميق بشكل مفرط والتأكد من أن هياكل البيانات الخاصة بك مسطحة قدر الإمكان لتحقيق الأداء الأمثل.
معاملات JSON المتاحة
يوفر ميلفوس العديد من عوامل تشغيل JSON القوية التي تساعد في تصفية بيانات JSON والاستعلام عنها، وهذه العوامل هي
JSON_CONTAINS(identifier, expr)
: تصفية الكيانات التي يوجد فيها تعبير JSON المحدد داخل الحقل.JSON_CONTAINS_ALL(identifier, expr)
: يضمن وجود جميع عناصر تعبير JSON المحدد في الحقل.JSON_CONTAINS_ANY(identifier, expr)
: يقوم بتصفية الكيانات التي يوجد فيها عنصر واحد على الأقل من تعبير JSON داخل الحقل.
دعونا نستكشف هذه العوامل مع أمثلة لنرى كيف يمكن تطبيقها في سيناريوهات العالم الحقيقي.
JSON_CONTAINS
يتحقق المشغل json_contains
مما إذا كان هناك عنصر معين أو مصفوفة فرعية موجودة داخل حقل JSON. يكون مفيدًا عندما تريد التأكد من احتواء مصفوفة أو كائن JSON على قيمة معينة.
مثال
تخيل أن لديك مجموعة من المنتجات، كل منها يحتوي على حقل tags
يحتوي على مصفوفة JSON من السلاسل، مثل ["electronics", "sale", "new"]
. تريد تصفية المنتجات التي تحتوي على العلامة "sale"
.
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains(tags, "sale")'
في هذا المثال، سيعيد Milvus جميع المنتجات التي يحتوي فيها الحقل tags
على العنصر "sale"
.
json_contains_all
يضمن المشغل json_contains_all
وجود جميع عناصر تعبير JSON المحدد في الحقل الهدف. وهو مفيد بشكل خاص عندما تحتاج إلى مطابقة قيم متعددة داخل مصفوفة JSON.
مثال
استمرارًا لسيناريو علامات المنتج، إذا كنت تريد العثور على جميع المنتجات التي تحتوي على العلامات "electronics"
و "sale"
و "new"
، يمكنك استخدام المشغل json_contains_all
.
# JSON data: {"tags": ["electronics", "sale", "new", "discount"]}
filter = 'json_contains_all(tags, ["electronics", "sale", "new"])'
سيعيد هذا الاستعلام جميع المنتجات حيث تحتوي المصفوفة tags
على العناصر الثلاثة المحددة: "electronics"
و "sale"
و "new"
.
json_cotains_any
يقوم المشغل json_contains_any
بتصفية الكيانات التي يوجد فيها عضو واحد على الأقل من تعبير JSON داخل الحقل. يكون هذا مفيدًا عندما تريد مطابقة الكيانات استنادًا إلى أي قيمة من عدة قيم ممكنة.
مثال
لنفترض أنك تريد تصفية المنتجات التي تحتوي على واحدة على الأقل من العلامات "electronics"
أو "sale"
أو "new"
. يمكنك استخدام المشغل json_contains_any
لتحقيق ذلك.
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains_any(tags, ["electronics", "new", "clearance"])'
في هذه الحالة، سيعيد Milvus جميع المنتجات التي تحتوي على واحدة على الأقل من العلامات في القائمة ["electronics", "new", "clearance"]
. حتى إذا كان المنتج يحتوي على إحدى هذه العلامات فقط، فسيتم تضمينه في النتيجة.