StructuredQuery

Firestore sorgusu.

Sorgu aşamaları şu sırayla yürütülür: 1.'den 2'ye. Burada 3. 4. orderBy + startAt + endAt 5'i seçin. Ofset 6. limit

JSON gösterimi
{
  "select": {
    object (Projection)
  },
  "from": [
    {
      object (CollectionSelector)
    }
  ],
  "where": {
    object (Filter)
  },
  "orderBy": [
    {
      object (Order)
    }
  ],
  "startAt": {
    object (Cursor)
  },
  "endAt": {
    object (Cursor)
  },
  "offset": integer,
  "limit": integer,
  "findNearest": {
    object (FindNearest)
  }
}
Alanlar
select

object (Projection)

Döndürülecek alanların isteğe bağlı alt kümesi.

Bu, bir sorgudan döndürülen dokümanlar üzerinde bir DocumentMask işlevi görür. Ayarlanmazsa arayanın tüm alanların döndürülmesini istediğini varsayar.

from[]

object (CollectionSelector)

Sorgulanacak koleksiyonlar.

where

object (Filter)

Uygulanacak filtre.

orderBy[]

object (Order)

Sorgu sonuçlarına uygulanacak sıra.

Firestore, arayanların tam sipariş veya kısmi sipariş vermelerine ya da hiç sipariş vermemelerine olanak tanır. Firestore her durumda, aşağıdaki kurallar aracılığıyla istikrarlı bir sıralamayı garanti eder:

  • orderBy, eşitsizlik filtresiyle kullanılan tüm alanlara referans vermek için gereklidir.
  • orderBy içinde olması gereken ancak halihazırda mevcut olmayan tüm alanlara, alan adının sözlük sıralamasına göre eklenir.
  • __name__ üzerinde bir sipariş belirtilmezse varsayılan olarak bu sipariş eklenir.

Alanlara, belirtilen son sırayla aynı sıralama yönü veya herhangi bir sıra belirtilmemişse "ASCENDING" ifadesi eklenir. Örnek:

  • ORDER BY a, ORDER BY a ASC, __name__ ASC olur
  • ORDER BY a DESC, ORDER BY a DESC, __name__ DESC olur
  • WHERE a > 1, WHERE a > 1 ORDER BY a ASC, __name__ ASC olur
  • WHERE __name__ > ... AND a > 1, WHERE __name__ > ... AND a > 1 ORDER BY a ASC, __name__ ASC olur
startAt

object (Cursor)

Sonuç kümesindeki sorgunun başlatılacağı konumun potansiyel ön eki.

Sonuç kümesinin sıralaması, orijinal sorgunun ORDER BY ifadesine göredir.

SELECT * FROM k WHERE a = 1 AND b > 2 ORDER BY b ASC, __name__ ASC;

Bu sorgunun sonuçları (b ASC, __name__ ASC) etiketine göre sıralanıyor.

İmleçler tam sıralamaya veya konumun önekine referans verebilir. Ancak sağlanan ORDER BY alanında bulunandan daha fazla alana atıfta bulunamaz.

Yukarıdaki örnekten devam edeceğimiz için, aşağıdaki başlatma imleçlerini eklemenin çeşitli etkileri olacaktır:

  • START BEFORE (2, /k/123): Sorguyu a = 1 AND b > 2 AND __name__ > /k/123 tarihinden hemen önce başlatır.
  • START AFTER (10): Sorguyu a = 1 AND b > 10 tarihinden hemen sonra başlatın.

Atlanması için ilk N sonucun taranmasını gerektiren OFFSET işlevinin aksine, başlatma imleci sorgunun mantıksal bir konumda başlamasını sağlar. Bu konumun gerçek bir sonuçla eşleşmesi gerekmez. Sonraki dokümanı bulmak için bu konumdan ileriye doğru tarama yapar.

Gerekenler:

  • Değer sayısı, ORDER BY yan tümcesinde belirtilen alan sayısından fazla olamaz.
endAt

object (Cursor)

Sonuç kümesinde sorgunun sona ereceği konumun potansiyel ön eki.

Bu, START_AT özelliğine benzer ancak başlangıç konumu yerine bitiş konumunu kontrol eder.

Gerekenler:

  • Değer sayısı, ORDER BY yan tümcesinde belirtilen alan sayısından fazla olamaz.
offset

integer

İlk sonuç döndürülmeden önce atlanacak doküman sayısı.

Bu, WHERE, START AT ve END AT tarafından belirtilen kısıtlamalardan sonra, LIMIT ifadesinden önce geçerlidir.

Gerekenler:

  • Değer belirtilirse sıfırdan büyük veya sıfıra eşit olmalıdır.
limit

integer

Döndürülecek maksimum sonuç sayısı.

Diğer tüm kısıtlamalardan sonra geçerlidir.

Gerekenler:

  • Değer belirtilirse sıfırdan büyük veya sıfıra eşit olmalıdır.
findNearest

object (FindNearest)

İsteğe bağlı. Potansiyel bir En Yakın Komşular Araması.

Diğer tüm filtrelerden ve sıralamalardan sonra uygulanır.

Verilen sorgu vektörüne en yakın vektör yerleştirmeleri bulur.

Projeksiyon

Döndürülecek belge alanlarının projeksiyonu.

JSON gösterimi
{
  "fields": [
    {
      object (FieldReference)
    }
  ]
}
Alanlar
fields[]

object (FieldReference)

Döndürülecek alanlar.

Boşsa tüm alanlar döndürülür. Yalnızca belgenin adını döndürmek için ['__name__'] işlevini kullanın.

Koleksiyon Seçici

messages as m1 gibi bir koleksiyon seçimi.

JSON gösterimi
{
  "collectionId": string,
  "allDescendants": boolean
}
Alanlar
collectionId

string

Koleksiyon kimliği. Ayarlandığında yalnızca bu kimliğe sahip koleksiyonlar seçilir.

allDescendants

boolean

Yanlış değerine ayarlandığında yalnızca, içeren RunQueryRequest öğesinde belirtilen parent öğesinin en yakın alt öğeleri olan koleksiyonları seçer. Doğru değerine ayarlandığında tüm alt alt koleksiyonları seçer.

Filtre

Filtre.

JSON gösterimi
{

  // Union field filter_type can be only one of the following:
  "compositeFilter": {
    object (CompositeFilter)
  },
  "fieldFilter": {
    object (FieldFilter)
  },
  "unaryFilter": {
    object (UnaryFilter)
  }
  // End of list of possible types for union field filter_type.
}
Alanlar
Birleştirme alanı filter_type. Filtrenin türü. filter_type şunlardan yalnızca biri olabilir:
compositeFilter

object (CompositeFilter)

Birleşik filtre.

fieldFilter

object (FieldFilter)

Belge alanında bir filtre.

unaryFilter

object (UnaryFilter)

Tam olarak bir bağımsız değişken alan filtre.

Birleşik Filtre

Belirtilen operatörü kullanarak diğer filtreleri birleştiren bir filtre.

JSON gösterimi
{
  "op": enum (Operator),
  "filters": [
    {
      object (Filter)
    }
  ]
}
Alanlar
op

enum (Operator)

Birden fazla filtreyi birleştirme operatörü.

filters[]

object (Filter)

Birleştirilecek filtrelerin listesi.

Gerekenler:

  • En az bir filtre var.

Operatör

Bileşik filtre operatörü.

Sıralamalar
OPERATOR_UNSPECIFIED Belirtilmedi. Bu değer kullanılmamalıdır.
AND Dokümanlar, birleştirilmiş filtrelerin tamamına uymak için gereklidir.
OR Dokümanların, birleştirilmiş filtrelerden en az birine uyması gerekir.

Alan Filtresi

Belirli bir alandaki filtre.

JSON gösterimi
{
  "field": {
    object (FieldReference)
  },
  "op": enum (Operator),
  "value": {
    object (Value)
  }
}
Alanlar
field

object (FieldReference)

Filtreleme ölçütü olarak kullanılacak alan.

op

enum (Operator)

Filtreleme ölçütü olarak kullanılacak operatör.

value

object (Value)

Karşılaştırılacak değer.

Operatör

Alan filtresi operatörü.

Sıralamalar
OPERATOR_UNSPECIFIED Belirtilmedi. Bu değer kullanılmamalıdır.
LESS_THAN

Belirtilen field, belirtilen value değerinden düşük.

Gerekenler:

  • Bu field, orderBy bölgesinde ilk sırada.
LESS_THAN_OR_EQUAL

Verilen field, belirtilen value değerinden küçük veya bu değere eşit.

Gerekenler:

  • Bu field, orderBy bölgesinde ilk sırada.
GREATER_THAN

Belirtilen field, belirtilen value değerinden büyük.

Gerekenler:

  • Bu field, orderBy bölgesinde ilk sırada.
GREATER_THAN_OR_EQUAL

Verilen field, belirtilen value değerinden büyük veya bu değere eşit.

Gerekenler:

  • Bu field, orderBy bölgesinde ilk sırada.
EQUAL Verilen field, verilen value değerine eşit.
NOT_EQUAL

Verilen field, belirtilen value değerine eşit değil.

Gerekenler:

  • Başka NOT_EQUAL, NOT_IN, IS_NOT_NULL veya IS_NOT_NAN yok.
  • field, orderBy içinde birinci sırada.
ARRAY_CONTAINS Verilen field, belirtilen value değerini içeren bir dizi.
IN

Verilen field, belirtilen dizideki en az bir değere eşit.

Gerekenler:

  • Bu value, boş olmayan bir ArrayValue değeri olup ayırma sınırlarına tabidir.
  • Aynı sorguda NOT_IN filtresi yok.
ARRAY_CONTAINS_ANY

Verilen field, belirtilen dizideki değerlerden herhangi birini içeren bir dizidir.

Gerekenler:

  • Bu value, boş olmayan bir ArrayValue değeri olup ayırma sınırlarına tabidir.
  • Aynı ayırma içinde başka ARRAY_CONTAINS_ANY filtresi yok.
  • Aynı sorguda NOT_IN filtresi yok.
NOT_IN

field değeri, belirtilen dizide değil.

Gerekenler:

  • Bu value, en fazla 10 değere sahip boş olmayan bir ArrayValue.
  • Başka OR, IN, ARRAY_CONTAINS_ANY, NOT_IN, NOT_EQUAL, IS_NOT_NULL veya IS_NOT_NAN yok.
  • field, orderBy içinde birinci sırada.

BirliFiltre

Tek işlem gören bir filtre.

JSON gösterimi
{
  "op": enum (Operator),

  // Union field operand_type can be only one of the following:
  "field": {
    object (FieldReference)
  }
  // End of list of possible types for union field operand_type.
}
Alanlar
op

enum (Operator)

Uygulanacak tekli operatör.

Birleştirme alanı operand_type. Filtrenin bağımsız değişkeni. operand_type şunlardan yalnızca biri olabilir:
field

object (FieldReference)

Operatörün uygulanacağı alan.

Operatör

Tekli operatör.

Sıralamalar
OPERATOR_UNSPECIFIED Belirtilmedi. Bu değer kullanılmamalıdır.
IS_NAN Verilen field, NaN değerine eşit.
IS_NULL Verilen field, NULL değerine eşit.
IS_NOT_NAN

Verilen field, NaN değerine eşit değil.

Gerekenler:

  • Başka NOT_EQUAL, NOT_IN, IS_NOT_NULL veya IS_NOT_NAN yok.
  • field, orderBy içinde birinci sırada.
IS_NOT_NULL

Verilen field, NULL değerine eşit değil.

Gerekenler:

  • Tek bir NOT_EQUAL, NOT_IN, IS_NOT_NULL veya IS_NOT_NAN.
  • field, orderBy içinde birinci sırada.

Sipariş

Sahadaki bir sipariş.

JSON gösterimi
{
  "field": {
    object (FieldReference)
  },
  "direction": enum (Direction)
}
Alanlar
field

object (FieldReference)

Sıralama ölçütü olarak kullanılacak alan.

direction

enum (Direction)

Sıralama ölçütü: Varsayılan olarak ASCENDING değerine ayarlanır.

Yön

Sıralama yönü.

Sıralamalar
DIRECTION_UNSPECIFIED Belirtilmedi.
ASCENDING Artan.
DESCENDING Azalan.

En Yakın Bul

En yakın Komşular arama yapılandırması.

JSON gösterimi
{
  "vectorField": {
    object (FieldReference)
  },
  "queryVector": {
    object (Value)
  },
  "distanceMeasure": enum (DistanceMeasure),
  "limit": integer
}
Alanlar
vectorField

object (FieldReference)

Zorunlu. Arama yapılacak dizine eklenmiş vektör alanı. Yalnızca boyutları queryVector ile eşleşen vektörleri içeren dokümanlar döndürülebilir.

queryVector

object (Value)

Zorunlu. Arama yaptığımız sorgu vektörü. Boyutları en fazla 2048 olan bir vektör içermelidir.

distanceMeasure

enum (DistanceMeasure)

Zorunlu. Kullanılacak Mesafe Ölçümü zorunludur.

limit

integer

Zorunlu. Geri dönecek en yakın komşu sayısı. 1000'den fazla olmayan pozitif bir tam sayı olmalıdır.

Mesafe Ölçümü

Vektörleri karşılaştırırken kullanılacak mesafe ölçüsü.

Sıralamalar
DISTANCE_MEASURE_UNSPECIFIED Ayarlanmamalıdır.
EUCLIDEAN Vektörler arasındaki EUCLIDEAN mesafesini ölçer. Daha fazla bilgi edinmek için Euclidean (Öklide dili) başlıklı makaleyi inceleyin
COSINE Vektörleri aralarındaki açıya göre karşılaştırır. Bu sayede, vektörlerin büyüklüğüne bağlı olmayan benzerliği ölçebilirsiniz. Daha iyi performans ile matematiksel olarak eşdeğer olan COSINE mesafesi yerine birim normalleştirilmiş vektörlerle DOT_PRODUCT kullanmanızı öneririz. Daha fazla bilgi edinmek için Kosinüs Benzerliği bölümüne bakın.
DOT_PRODUCT Kosinüs'e benzer, ancak vektörlerin büyüklüğünden etkilenir. Daha fazla bilgi edinmek için Dot Product (Nokta Ürünü) başlıklı makaleyi inceleyin.