Operator ARRAY
Milvus menyediakan operator ARRAY untuk menyaring bidang ARRAY dan memperbarui sebagian nilai bidang ARRAY.
Semua elemen dalam sebuah array harus memiliki tipe yang sama, dan struktur bersarang di dalam array diperlakukan sebagai string biasa. Oleh karena itu, saat bekerja dengan bidang ARRAY, disarankan untuk menghindari penyarangan yang terlalu dalam dan memastikan bahwa struktur data Anda sedatar mungkin untuk kinerja yang optimal.
Operator ARRAY di Milvus mencakup dua skenario penggunaan:
Ekspresi penyaringan untuk kueri dan pencarian.
Pembaruan sebagian dalam perminta
upsert.
Operator ARRAY yang tersedia
Tabel berikut mencantumkan operator ARRAY yang tersedia di Milvus.
| Operator | Digunakan dalam | Deskripsi |
|---|---|---|
| ARRAY_CONTAINS(pengidentifikasi, ekspresi) | Ekspresi filter | Memeriksa apakah elemen tertentu ada dalam bidang ARRAY. |
| ARRAY_CONTAINS_ALL(pengidentifikasi, ekspresi) | Ekspresi filter | Memeriksa apakah semua elemen dalam daftar yang ditentukan terdapat dalam bidang ARRAY. |
| ARRAY_CONTAINS_ANY(pengidentifikasi, ekspresi) | Ekspresi filter | Memeriksa apakah ada elemen dalam daftar yang ditentukan yang terdapat dalam bidang ARRAY. |
| ARRAY_LENGTH(pengidentifikasi) | Ekspresi filter | Mengembalikan jumlah elemen dalam bidang ARRAY dan dapat digabungkan dengan operator perbandingan untuk penyaringan. |
| ARRAY_APPEND | upsert dengan field_ops | Menambahkan elemen muatan ke bidang ARRAY yang sudah ada. Tersedia di Milvus v2.6.17 dan versi selanjutnya. |
| ARRAY_REMOVE | upsert dengan field_ops | Menghapus setiap elemen dari bidang ARRAY yang sudah ada yang cocok dengan nilai dalam payload permintaan. Tersedia di Milvus v2.6.17 dan versi yang lebih baru. |
ARRAY_CONTAINS
Operator ` ARRAY_CONTAINS ` memeriksa apakah elemen tertentu ada dalam bidang array. Operator ini berguna saat Anda ingin menemukan entitas di mana elemen tertentu terdapat dalam array.
Contoh
Misalkan Anda memiliki bidang array ` history_temperatures`, yang berisi suhu terendah yang tercatat untuk tahun-tahun yang berbeda. Untuk menemukan semua entitas di mana array tersebut berisi nilai ` 23`, Anda dapat menggunakan ekspresi filter berikut:
filter = 'ARRAY_CONTAINS(history_temperatures, 23)'
Ini akan mengembalikan semua entitas di mana array ` history_temperatures ` berisi nilai ` 23`.
ARRAY_CONTAINS_ALL
Operator ` ARRAY_CONTAINS_ALL ` memastikan bahwa semua elemen dari daftar yang ditentukan terdapat dalam bidang array. Operator ini berguna ketika Anda ingin mencocokkan entitas yang mengandung beberapa nilai dalam array.
Contoh
Jika Anda ingin menemukan semua entitas di mana array ` history_temperatures ` berisi baik ` 23 ` maupun ` 24`, Anda dapat menggunakan:
filter = 'ARRAY_CONTAINS_ALL(history_temperatures, [23, 24])'
Ini akan mengembalikan semua entitas di mana array ` history_temperatures ` berisi kedua nilai yang ditentukan.
ARRAY_CONTAINS_ANY
Operator ` ARRAY_CONTAINS_ANY ` memeriksa apakah salah satu elemen dari daftar yang ditentukan terdapat dalam bidang array. Ini berguna ketika Anda ingin mencocokkan entitas yang mengandung setidaknya satu dari nilai yang ditentukan dalam array.
Contoh
Untuk menemukan semua entitas di mana array ` history_temperatures ` berisi salah satu dari ` 23 ` atau ` 24`, Anda dapat menggunakan:
filter = 'ARRAY_CONTAINS_ANY(history_temperatures, [23, 24])'
Ini akan mengembalikan semua entitas di mana array ` history_temperatures ` berisi setidaknya salah satu dari nilai ` 23 ` atau ` 24`.
ARRAY_LENGTH
ARRAY_LENGTH mengembalikan panjang (jumlah elemen) dari bidang array. Fungsi ini menerima tepat satu parameter: pengenal bidang array.
Contoh
Untuk menemukan semua entitas di mana array ` history_temperatures ` memiliki kurang dari 10 elemen:
filter = 'ARRAY_LENGTH(history_temperatures) < 10'
Ini akan mengembalikan semua entitas di mana array ` history_temperatures ` memiliki kurang dari 10 elemen.
ARRAY_APPENDCompatible with Milvus 2.6.17+
Operator ` ARRAY_APPEND ` menambahkan elemen payload ke bidang ARRAY yang sudah ada selama permintaan ` upsert `. Ini bukan ekspresi filter. Gunakan operator ini saat Anda ingin menambahkan nilai ke array tanpa terlebih dahulu menanyakan nilai array saat ini.
Contoh Python berikut menambahkan ` "premium" ` ke bidang ARRAY ` tags ` dari entitas yang kunci utamanya adalah ` 1`:
from pymilvus import FieldOp, MilvusClient
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
client.upsert(
collection_name="users",
data=[{"pk": 1, "tags": ["premium"]}],
field_ops={"tags": FieldOp.array_append()},
)
Menambahkan ` ARRAY_APPEND ` ke bidang melalui ` field_ops ` mengaktifkan semantik pembaruan parsial untuk bidang tersebut. Untuk alur kerja lengkap, jenis elemen yang didukung, dan batasan, lihat Bidang ARRAY Upsert dalam mode penggabungan.
ARRAY_REMOVECompatible with Milvus 2.6.17+
Operator ` ARRAY_REMOVE ` menghapus setiap elemen dari bidang ARRAY yang ada yang cocok dengan nilai dalam muatan permintaan selama permintaan ` upsert `. Ini bukan ekspresi filter. Gunakan ini saat Anda ingin menghapus nilai yang cocok dari array tanpa terlebih dahulu menanyakan nilai array saat ini.
Contoh Python berikut menghapus ` "trial" ` dari bidang ARRAY ` tags ` entitas yang memiliki kunci utama ` 1`:
from pymilvus import FieldOp, MilvusClient
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
client.upsert(
collection_name="users",
data=[{"pk": 1, "tags": ["trial"]}],
field_ops={"tags": FieldOp.array_remove()},
)
Menambahkan ` ARRAY_REMOVE ` ke suatu bidang melalui ` field_ops ` mengaktifkan semantik pembaruan parsial untuk bidang tersebut. Untuk alur kerja lengkap, jenis elemen yang didukung, dan batasan, lihat bidang ARRAY Upsert dalam mode penggabungan.