Operatori ARRAY
Milvus offre potenti operatori per interrogare i campi degli array, consentendo di filtrare e recuperare entità in base al loro contenuto.
Tutti gli elementi di un array devono essere dello stesso tipo e le strutture annidate all'interno degli array sono trattate come stringhe semplici. Pertanto, quando si lavora con i campi ARRAY, è consigliabile evitare annidamenti troppo profondi e assicurarsi che le strutture di dati siano il più possibile piatte per ottenere prestazioni ottimali.
Operatori ARRAY disponibili
Gli operatori ARRAY consentono di interrogare con precisione i campi array in Milvus. Gli operatori sono:
ARRAY_CONTAINS(identifier, expr): verifica l'esistenza di un elemento specifico in un campo array.ARRAY_CONTAINS_ALL(identifier, expr): assicura che tutti gli elementi dell'elenco specificato siano presenti nel campo dell'array.ARRAY_CONTAINS_ANY(identifier, expr): verifica se uno qualsiasi degli elementi dell'elenco specificato è presente nel campo dell'array.ARRAY_LENGTH(identifier): restituisce il numero di elementi di un campo array e può essere combinato con gli operatori di confronto per il filtraggio.
ARRAY_CONTAINS
L'operatore ARRAY_CONTAINS controlla se un elemento specifico esiste in un campo array. È utile quando si vogliono trovare entità in cui un determinato elemento è presente nell'array.
Esempio
Si supponga di avere un campo array history_temperatures, che contiene le temperature minime registrate per diversi anni. Per trovare tutte le entità in cui l'array contiene il valore 23, si può usare la seguente espressione di filtro:
filter = 'ARRAY_CONTAINS(history_temperatures, 23)'
Questo restituirà tutte le entità in cui l'array history_temperatures contiene il valore 23.
ARRAY_CONTAINS_ALL
L'operatore ARRAY_CONTAINS_ALL assicura che tutti gli elementi dell'elenco specificato siano presenti nel campo dell'array. Questo operatore è utile quando si desidera abbinare entità che contengono più valori nell'array.
Esempio
Se si vogliono trovare tutte le entità in cui l'array history_temperatures contiene sia 23 che 24, si può usare:
filter = 'ARRAY_CONTAINS_ALL(history_temperatures, [23, 24])'
Questo restituirà tutte le entità in cui l'array history_temperatures contiene entrambi i valori specificati.
ARRAY_CONTAINS_ANY
L'operatore ARRAY_CONTAINS_ANY controlla se uno qualsiasi degli elementi dell'elenco specificato è presente nel campo dell'array. È utile quando si desidera abbinare entità che contengono almeno uno dei valori specificati nell'array.
Esempio
Per trovare tutte le entità in cui la matrice history_temperatures contiene o 23 o 24, si può utilizzare l'operatore:
filter = 'ARRAY_CONTAINS_ANY(history_temperatures, [23, 24])'
Questo restituirà tutte le entità in cui l'array history_temperatures contiene almeno uno dei valori 23 o 24.
LUNGHEZZA_ARRAY
Il comando ARRAY_LENGTH restituisce la lunghezza (numero di elementi) di un campo array. Accetta esattamente un parametro: l'identificatore del campo dell'array.
Esempio
Per trovare tutte le entità in cui l'array history_temperatures ha meno di 10 elementi:
filter = 'ARRAY_LENGTH(history_temperatures) < 10'
Questo restituirà tutte le entità in cui l'array history_temperatures ha meno di 10 elementi.