Operator JSON
Milvus mendukung operator tingkat lanjut untuk melakukan kueri dan memfilter bidang JSON, menjadikannya sempurna untuk mengelola data yang kompleks dan terstruktur. Operator-operator ini memungkinkan kueri yang sangat efektif untuk dokumen JSON, memungkinkan Anda untuk mengambil entitas berdasarkan elemen, nilai, atau kondisi tertentu di dalam bidang JSON. Bagian ini akan memandu Anda dalam menggunakan operator khusus JSON di Milvus, dengan memberikan contoh-contoh praktis untuk mengilustrasikan fungsionalitasnya.
Field JSON tidak dapat menangani struktur bersarang yang kompleks dan memperlakukan semua struktur bersarang sebagai string biasa. Oleh karena itu, ketika bekerja dengan bidang JSON, disarankan untuk menghindari penumpukan yang terlalu dalam dan memastikan bahwa struktur data Anda serata mungkin untuk kinerja yang optimal.
Operator JSON yang Tersedia
Milvus menyediakan beberapa operator JSON yang kuat untuk membantu memfilter dan meminta data JSON, dan operator-operator tersebut adalah.
JSON_CONTAINS(identifier, expr)
: Memfilter entitas di mana ekspresi JSON yang ditentukan ditemukan di dalam field.JSON_CONTAINS_ALL(identifier, expr)
: Memastikan bahwa semua elemen dari ekspresi JSON yang ditentukan ada di dalam field.JSON_CONTAINS_ANY(identifier, expr)
: Memfilter entitas di mana setidaknya satu anggota ekspresi JSON ada di dalam field.
Mari kita jelajahi operator ini dengan contoh untuk melihat bagaimana operator ini dapat diterapkan dalam skenario dunia nyata.
JSON_CONTAINS
Operator json_contains
memeriksa apakah elemen atau sub-larik tertentu ada di dalam bidang JSON. Operator ini berguna ketika Anda ingin memastikan bahwa larik atau objek JSON berisi nilai tertentu.
Contoh
Bayangkan Anda memiliki koleksi produk, masing-masing dengan bidang tags
yang berisi larik JSON berisi string, seperti ["electronics", "sale", "new"]
. Anda ingin memfilter produk yang memiliki tag "sale"
.
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains(tags, "sale")'
Dalam contoh ini, Milvus akan mengembalikan semua produk yang bidang tags
berisi elemen "sale"
.
JSON_CONTAINS_ALL
Operator json_contains_all
memastikan bahwa semua elemen dari ekspresi JSON yang ditentukan ada di bidang target. Operator ini sangat berguna ketika Anda perlu mencocokkan beberapa nilai dalam larik JSON.
Contoh
Melanjutkan skenario tag produk, jika Anda ingin menemukan semua produk yang memiliki tag "electronics"
, "sale"
, dan "new"
, Anda dapat menggunakan operator json_contains_all
.
# JSON data: {"tags": ["electronics", "sale", "new", "discount"]}
filter = 'json_contains_all(tags, ["electronics", "sale", "new"])'
Kueri ini akan mengembalikan semua produk yang larik tags
berisi ketiga elemen yang ditentukan: "electronics"
, "sale"
, dan "new"
.
JSON_COTAINS_ANY
Operator json_contains_any
menyaring entitas di mana setidaknya satu anggota ekspresi JSON ada di dalam bidang. Ini berguna ketika Anda ingin mencocokkan entitas berdasarkan salah satu dari beberapa nilai yang mungkin.
Contoh
Katakanlah Anda ingin memfilter produk yang memiliki setidaknya salah satu tag "electronics"
, "sale"
, atau "new"
. Anda dapat menggunakan operator json_contains_any
untuk mencapai hal ini.
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains_any(tags, ["electronics", "new", "clearance"])'
Dalam hal ini, Milvus akan mengembalikan semua produk yang memiliki setidaknya salah satu tag dalam daftar ["electronics", "new", "clearance"]
. Meskipun sebuah produk hanya memiliki salah satu dari tag tersebut, produk tersebut akan disertakan dalam hasil pencarian.