Dizi işlevleri

Dizi İşlevleri

Ad Açıklama
ARRAY Her giriş bağımsız değişkeni için bir öğe içeren bir ARRAY döndürür.
ARRAY_CONCAT Birden fazla diziyi tek bir ARRAY içinde birleştirir.
ARRAY_CONTAINS Belirli bir ARRAY, belirli bir değeri içeriyorsa TRUE değerini döndürür.
ARRAY_CONTAINS_ALL Tüm değerler ARRAY içinde mevcutsa TRUE değerini döndürür.
ARRAY_CONTAINS_ANY Değerlerden herhangi biri ARRAY içinde varsa TRUE değerini döndürür.
ARRAY_FILTER Bir ARRAY öğesindeki, bir yüklemi karşılamayan öğeleri filtreler.
ARRAY_FIRST ARRAY içindeki ilk öğeyi döndürür.
ARRAY_FIRST_N ARRAY içindeki ilk n öğeyi döndürür.
ARRAY_GET ARRAY içinde belirtilen dizindeki öğeyi döndürür.
ARRAY_INDEX_OF Bir ARRAY değerinin ilk oluşumunun dizinini döndürür.
ARRAY_INDEX_OF_ALL Bir ARRAY içindeki değerin tüm dizinlerini döndürür.
ARRAY_LENGTH Bir ARRAY içindeki öğe sayısını döndürür.
ARRAY_LAST ARRAY içindeki son öğeyi döndürür.
ARRAY_LAST_N ARRAY içindeki son n öğeyi döndürür.
ARRAY_REVERSE ARRAY içindeki öğelerin sırasını tersine çevirir.
ARRAY_SLICE ARRAY dilimini döndürür.
ARRAY_TRANSFORM İfadeyi her öğeye uygulayarak ARRAY içindeki öğeleri dönüştürür.
MAXIMUM ARRAY içindeki maksimum değeri döndürür.
MAXIMUM_N n içindeki en büyük ARRAY değeri döndürür.
MINIMUM ARRAY içindeki minimum değeri döndürür.
MINIMUM_N n içindeki en küçük ARRAY değeri döndürür.
SUM Bir ARRAY içindeki tüm NUMERIC değerlerinin toplamını döndürür.
JOIN ARRAY içindeki öğelerin birleşimini STRING değeri olarak oluşturur.

ARRAY

Söz dizimi:

array(values: ANY...) -> ARRAY

Açıklama:

Belirtilen öğelerden bir dizi oluşturur.

  • Bir bağımsız değişken yoksa sonuçtaki dizide NULL ile değiştirilir.

Örnekler:

values array(values)
() []
(1, 2, 3) [1, 2, 3]
("a", 1, true) ["a", 1, true]
(1, null) [1, null]
(1, [2, 3]) [1, [2, 3]]

ARRAY_CONCAT

Söz dizimi:

array_concat(arrays: ARRAY...) -> ARRAY

Açıklama:

İki veya daha fazla diziyi tek bir ARRAY içinde birleştirir.

Örnekler:

diziler array_concat(arrays)
([1, 2], [3, 4]) [1, 2, 3, 4]
(["a", "b"], ["c"]) ["a", "b", "c"]
([1], [2], [3]) [1, 2, 3]
([], [1, 2]) [1, 2]
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(field("genre").arrayConcat([field("subGenre")]).as("allGenres"))
  .execute();
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([Field("genre").arrayConcat([Field("subGenre")]).as("allGenres")])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(field("genre").arrayConcat(field("subGenre")).alias("allGenres"))
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("books")
    .select(field("genre").arrayConcat(field("subGenre")).alias("allGenres"))
    .execute();
    
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("genre").array_concat(Field.of("subGenre")).as_("allGenres"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(arrayConcat(field("genre"), field("subGenre")).as("allGenres"))
        .execute()
        .get();

ARRAY_CONTAINS

Söz dizimi:

array_contains(array: ARRAY, value: ANY) -> BOOLEAN

Açıklama:

value, array içinde bulunursa TRUE, aksi takdirde FALSE değerini döndürür.

Örnekler:

dizi value array_contains(array, value)
[1, 2, 3] 2 doğru
[[1, 2], [3]] [1, 2] doğru
[1, null] null doğru
"abc" TÜM FİYATLAR hata
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(field("genre").arrayContains(constant("mystery")).as("isMystery"))
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(field("genre").arrayContains(constant("mystery")).as("isMystery"))
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([Field("genre").arrayContains(Constant("mystery")).as("isMystery")])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(field("genre").arrayContains("mystery").alias("isMystery"))
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("books")
    .select(field("genre").arrayContains("mystery").alias("isMystery"))
    .execute();
    
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("genre").array_contains("mystery").as_("isMystery"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(arrayContains(field("genre"), "mystery").as("isMystery"))
        .execute()
        .get();

ARRAY_CONTAINS_ALL

Söz dizimi:

array_contains_all(array: ARRAY, search_values: ARRAY) -> BOOLEAN

Açıklama:

Tüm search_values değerleri array içinde bulunursa TRUE, aksi takdirde FALSE değerini döndürür.

Örnekler:

dizi search_values array_contains_all(array, search_values)
[1, 2, 3] [1, 2] doğru
[1, 2, 3] [1, 4] yanlış
[1, null] [boş] doğru
[NaN] [NaN] doğru
[] [] doğru
[1, 2, 3] [] doğru
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(
    field("genre")
      .arrayContainsAll([constant("fantasy"), constant("adventure")])
      .as("isFantasyAdventure")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(
    field("genre")
      .arrayContainsAll([constant("fantasy"), constant("adventure")])
      .as("isFantasyAdventure")
  )
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([
    Field("genre")
      .arrayContainsAll([Constant("fantasy"), Constant("adventure")])
      .as("isFantasyAdventure")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(
        field("genre")
            .arrayContainsAll(listOf("fantasy", "adventure"))
            .alias("isFantasyAdventure")
    )
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("books")
    .select(
        field("genre")
            .arrayContainsAll(Arrays.asList("fantasy", "adventure"))
            .alias("isFantasyAdventure")
    )
    .execute();
    
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(
        Field.of("genre")
        .array_contains_all(["fantasy", "adventure"])
        .as_("isFantasyAdventure")
    )
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(
            arrayContainsAll(field("genre"), Arrays.asList("fantasy", "adventure"))
                .as("isFantasyAdventure"))
        .execute()
        .get();

ARRAY_CONTAINS_ANY

Söz dizimi:

array_contains_any(array: ARRAY, search_values: ARRAY) -> BOOLEAN

Açıklama:

search_values değerlerinden herhangi biri array içinde bulunursa TRUE, aksi takdirde FALSE değerini döndürür.

Örnekler:

dizi search_values array_contains_any(array, search_values)
[1, 2, 3] [4, 1] doğru
[1, 2, 3] [4, 5] yanlış
[1, 2, null] [boş] doğru
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(
    field("genre")
      .arrayContainsAny([constant("fantasy"), constant("nonfiction")])
      .as("isMysteryOrFantasy")
  )
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(
    field("genre")
      .arrayContainsAny([constant("fantasy"), constant("nonfiction")])
      .as("isMysteryOrFantasy")
  )
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([
    Field("genre")
      .arrayContainsAny([Constant("fantasy"), Constant("nonfiction")])
      .as("isMysteryOrFantasy")
  ])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(
        field("genre")
            .arrayContainsAny(listOf("fantasy", "nonfiction"))
            .alias("isMysteryOrFantasy")
    )
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("books")
    .select(
        field("genre")
            .arrayContainsAny(Arrays.asList("fantasy", "nonfiction"))
            .alias("isMysteryOrFantasy")
    )
    .execute();
    
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(
        Field.of("genre")
        .array_contains_any(["fantasy", "nonfiction"])
        .as_("isMysteryOrFantasy")
    )
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(
            arrayContainsAny(field("genre"), Arrays.asList("fantasy", "nonfiction"))
                .as("isMysteryOrFantasy"))
        .execute()
        .get();

ARRAY_FILTER

Söz dizimi:

array_filter(array: ARRAY, predicate: (ANY) -> BOOLEAN) -> ARRAY

Açıklama:

array ifadesini kullanarak predicate öğelerini filtreler ve yalnızca koşulu karşılayan öğeleri içeren yeni bir dizi döndürür.

  • array içindeki her öğe için predicate değerlendirilir. true döndürürse öğe sonuca dahil edilir. Aksi takdirde (false veya null döndürürse) öğe atlanır.
  • predicate, boole olmayan veya null olmayan bir değer olarak değerlendirilirse işlev hata döndürür.

Örnekler:

dizi yüklem array_filter(array, predicate)
[1, 2, 3] x -> x > 1 [2, 3]
[1, null, 3] x -> x > 1 [3]
["a", "b", "c"] x -> x != "b" ["a", "c"]
[] x -> true []

ARRAY_GET

Söz dizimi:

array_get(array: ARRAY, index: INT64) -> ANY

Açıklama:

array içinde 0 tabanlı index konumundaki öğeyi döndürür.

  • index negatifse öğelere dizinin sonundan erişilir. Bu durumda -1 son öğedir.
  • array, ARRAY türünde değilse ve null değilse hata döndürür.
  • index sınırların dışındaysa işlev, eksik bir değer döndürür.
  • index, INT64 türünde değilse işlev hata döndürür.

Örnekler:

dizi indeks array_get(array, index)
[1, 2, 3] 0 1
[1, 2, 3] -1 3
[1, 2, 3] 3 yok
[1, 2, 3] -4 yok
"abc" 0 hata
null 0 null
Array "a" hata
Array 2.0 hata

ARRAY_LENGTH

Söz dizimi:

array_length(array: ARRAY) -> INT64

Açıklama:

array içindeki öğe sayısını döndürür.

Örnekler:

dizi array_length(array)
[1, 2, 3] 3
[] 0
[1, 1, 1] 3
[1, null] 2
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(field("genre").arrayLength().as("genreCount"))
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(field("genre").arrayLength().as("genreCount"))
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([Field("genre").arrayLength().as("genreCount")])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(field("genre").arrayLength().alias("genreCount"))
    .execute()

Java

Task<Pipeline.Snapshot> result = db.pipeline()
    .collection("books")
    .select(field("genre").arrayLength().alias("genreCount"))
    .execute();
    
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("genre").array_length().as_("genreCount"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(arrayLength(field("genre")).as("genreCount"))
        .execute()
        .get();

ARRAY_REVERSE

Söz dizimi:

array_reverse(array: ARRAY) -> ARRAY

Açıklama:

Belirtilen array değerini tersine çevirir.

Örnekler:

dizi array_reverse(array)
[1, 2, 3] [3, 2, 1]
["a", "b"] ["b", "a"]
[1, 2, 2, 3] [3, 2, 2, 1]
Node.js
const result = await db.pipeline()
  .collection("books")
  .select(arrayReverse(field("genre")).as("reversedGenres"))
  .execute();

Web

const result = await execute(db.pipeline()
  .collection("books")
  .select(field("genre").arrayReverse().as("reversedGenres"))
);
Swift
let result = try await db.pipeline()
  .collection("books")
  .select([Field("genre").arrayReverse().as("reversedGenres")])
  .execute()

Kotlin

val result = db.pipeline()
    .collection("books")
    .select(field("genre").arrayReverse().alias("reversedGenres"))
    .execute()
    

Java

Task<Pipeline.Snapshot> result = db.pipeline() .collection("books") .select(field("genre").arrayReverse().alias("reversedGenres")) .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

result = (
    client.pipeline()
    .collection("books")
    .select(Field.of("genre").array_reverse().as_("reversedGenres"))
    .execute()
)
Java
Pipeline.Snapshot result =
    firestore
        .pipeline()
        .collection("books")
        .select(arrayReverse(field("genre")).as("reversedGenres"))
        .execute()
        .get();

ARRAY_FIRST

Söz dizimi:

array_first(array: ARRAY) -> ANY

Açıklama:

array içindeki ilk öğeyi döndürür. Bu, array_get(array, 0) ile eşdeğerdir.

  • array boşsa eksik bir değer döndürür.

Örnekler:

dizi array_first(array)
[1, 2, 3] 1
[] yok

ARRAY_FIRST_N

Söz dizimi:

array_first_n(array: ARRAY, n: INT64) -> ARRAY

Açıklama:

array öğesinin ilk n öğesini döndürür. Bu, array_slice(array, 0, n) ile eşdeğerdir.

  • n negatifse hata döndürülür.

Örnekler:

dizi n array_first_n(array, n)
[1, 2, 3, 4, 5] 3 [1, 2, 3]
[1, 2] 3 [1, 2]
[1, 2, 3] 0 []

ARRAY_INDEX_OF

Söz dizimi:

array_index_of(array: ARRAY, value: ANY) -> INT64

Açıklama:

value karakterinin array içindeki ilk oluşumunun 0 tabanlı dizinini döndürür. value bulunamazsa -1 değerini döndürür.

Örnekler:

dizi value array_index_of(array, value)
[1, 2, 3, 2] 2 1
[1, 2, 3] 4 -1
[1, null, 3] null 1

ARRAY_INDEX_OF_ALL

Söz dizimi:

array_index_of_all(array: ARRAY, value: ANY) -> ARRAY<INT64>

Açıklama:

value öğesinin array içinde geçtiği tüm yerlerin 0 tabanlı dizinlerini içeren bir dizi döndürür. value bulunamazsa [] değerini döndürür.

Örnekler:

dizi value array_index_of_all(array, value)
[1, 2, 3, 2] 2 [1, 3]
[1, 2, 3] 4 []
[1, null, 3, null] null [1, 3]

ARRAY_LAST

Söz dizimi:

array_last(array: ARRAY) -> ANY

Açıklama:

array içindeki son öğeyi döndürür. Bu, array_get(array, -1) ile eşdeğerdir.

  • array boşsa eksik bir değer döndürür.

Örnekler:

dizi array_last(array)
[1, 2, 3] 3
[] yok

ARRAY_LAST_N

Söz dizimi:

array_last_n(array: ARRAY, n: INT64) -> ARRAY

Açıklama:

array dizisinin son n öğesini döndürür.

  • n negatifse hata döndürülür.

Örnekler:

dizi n array_last_n(array, n)
[1, 2, 3, 4, 5] 3 [3, 4, 5]
[1, 2] 3 [1, 2]
[1, 2, 3] 0 []

ARRAY_SLICE

Söz dizimi:

array_slice(array: ARRAY, offset: INT64, length: INT64) -> ARRAY

Açıklama:

0 tabanlı offset dizininden başlayıp length öğesini de içeren array alt kümesini döndürür.

  • offset negatifse dizinin sonundan itibaren başlangıç konumunu belirtir. -1 son öğedir.
  • length, offset'den sonra dizide kalan öğe sayısından büyükse sonuç dizinin sonuna kadar uzanır.
  • length negatif olmamalıdır. Aksi takdirde hata döndürülür.

Örnekler:

dizi telafi etmek uzunluk array_slice(array, offset, length)
[1, 2, 3, 4, 5] 1 3 [2, 3, 4]
[1, 2, 3, 4, 5] -2 2 [4, 5]
[1, 2, 3] 1 5 [2, 3]
[1, 2, 3] 3 2 []

ARRAY_TRANSFORM

Söz dizimi:

array_transform(array: ARRAY, expression: (ANY) -> ANY) -> ARRAY
array_transform(array: ARRAY, expression: (ANY, INT64) -> ANY) -> ARRAY

Açıklama:

Her öğeye expression işlevini uygulayarak array değerini dönüştürür ve dönüştürülmüş öğeler içeren yeni bir dizi döndürür. Çıkış dizisi her zaman giriş dizisiyle aynı boyutta olur.

  • expression, tekli işlev element -> result veya ikili işlev (element, index) -> result olabilir.
  • expression tekli ise array öğelerinin her biriyle çağrılır.
  • expression ikili ise array öğelerinin her biri ve bunlara karşılık gelen 0 tabanlı dizinle birlikte çağrılır.

Örnekler:

dizi ifade array_transform(array, expression)
[1, 2, 3] x -> x * 2 [2, 4, 6]
[1, 2, 3] x -> x + 1 [2, 3, 4]
[10, 20] (x, i) -> x + i [10, 21]
[] x -> 1 []

MAKSİMUM

Söz dizimi:

maximum(array: ARRAY) -> ANY

Açıklama:

array içindeki maksimum değeri döndürür.

  • NULL değerleri karşılaştırma sırasında yoksayılır.
  • array boşsa veya yalnızca NULL değerlerini içeriyorsa NULL değerini döndürür.

Örnekler:

dizi maximum(array)
[1, 5, 2] 5
[1, null, 5] 5
["a", "c", "b"] "c"
[null, null] null
[] null

MAXIMUM_N

Söz dizimi:

maximum_n(array: ARRAY, n: INT64) -> ARRAY

Açıklama:

n içindeki array en büyük değerlerin dizisini azalan sırada döndürür.

  • NULL değerleri yok sayılır.
  • n negatifse hata döndürülür.

Örnekler:

dizi n maximum_n(array, n)
[1, 5, 2, 4, 3] 3 [5, 4, 3]
[1, null, 5] 3 [5, 1]

MİNİMUM

Söz dizimi:

minimum(array: ARRAY) -> ANY

Açıklama:

array içindeki minimum değeri döndürür.

  • NULL değerleri karşılaştırma sırasında yoksayılır.
  • array boşsa veya yalnızca NULL değerlerini içeriyorsa NULL değerini döndürür.

Örnekler:

dizi minimum(array)
[1, 5, 2] 1
[5, null, 1] 1
["a", "c", "b"] "a"
[null, null] null
[] null

MINIMUM_N

Söz dizimi:

minimum_n(array: ARRAY, n: INT64) -> ARRAY

Açıklama:

n içindeki array en küçük değerlerin dizisini artan sırada döndürür.

  • NULL değerleri yok sayılır.
  • n negatifse hata döndürülür.

Örnekler:

dizi n minimum_n(array, n)
[1, 5, 2, 4, 3] 3 [1, 2, 3]
[5, null, 1] 3 [1, 5]

TOPLA

Söz dizimi:

sum(array: ARRAY) -> INT64 | FLOAT64

Açıklama:

Bir ARRAY içindeki tüm NUMERIC değerlerinin toplamını döndürür.

  • Dizideki sayısal olmayan değerler yoksayılır.
  • Dizideki sayısal değerlerden herhangi biri NaN ise işlev NaN değerini döndürür.
  • Dönüş türü, dizideki en geniş sayısal türe göre belirlenir: INT64 < FLOAT64.
  • Herhangi bir kayan nokta değeri toplanmadan önce 64 bitlik tam sayı taşması meydana gelirse hata döndürülür. Kayan nokta değerleri toplandığında taşma, +/- sonsuzlukla sonuçlanır.
  • Dizide hiç sayısal değer yoksa işlev NULL değerini döndürür.

Örnekler:

dizi sum(array)
[1, 2, 3] 6L
[1L, 2L, 3L] 6L
[2000000000, 2000000000] 4000000000L
[10, 20.5] 30,5
[1, "a", 2] 3L
[INT64.MAX_VALUE, 1] hata
[INT64.MAX_VALUE, 1, -1.0] hata
[INT64.MAX_VALUE, 1.0] 9.223372036854776e+18

KATIL

Söz dizimi:

join[T <: STRING | BYTES](array: ARRAY<T>, delimiter: T) -> STRING
join[T <: STRING | BYTES](array: ARRAY<T>, delimiter: T, null_text: T) -> STRING

Açıklama:

array içindeki öğelerin birleştirilmiş halini STRING olarak döndürür. array, STRING veya BYTES veri türünde olabilir.

  • array, delimiter ve null_text içindeki tüm öğeler aynı türden olmalıdır. Tüm öğeler STRING veya BYTES olmalıdır.
  • null_text sağlanırsa array içindeki tüm NULL değerleri null_text ile değiştirilir.
  • null_text sağlanmazsa array içindeki NULL değerleri sonuçtan çıkarılır.

Örnekler:

null_text sağlanmadığında:

dizi ayırıcı join(array, delimiter)
["a", "b", "c"] "," "a,b,c"
["a", null, "c"] "," "a,c"
[b'a', b'b', b'c'] b',' b'a,b,c'
["a", b'c'] "," hata
["a", "c"] b',' hata
[b'a', b'c'] "," hata

null_text sağlandığında:

dizi ayırıcı null_text join(array, delimiter, null_text)
["a", null, "c"] "," "MISSING" "a,MISSING,c"
[b'a', null, b'c'] b',' b'NULL' b'a,NULL,c'
[null, "b", null] "," "MISSING" "MISSING,b,MISSING"
[b'a', null, null] b',' b'NULL' b'a,NULL,NULL'
["a", null] "," b'N' hata
[b'a', null] b',' "N" hata