StructuredQuery

Firestore sorgusu.

Sorgu aşamaları şu sırayla yürütülür: 1. 2'den. 3. 4. orderBy + startAt + endAt 5. 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 anahtar, sorgudan döndürülen belgeler üzerinde DocumentMask görevi görür. Ayarlanmadığında, 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 sıralama veya kısmi sıralama yapmalarına ya da hiç sipariş vermemelerine olanak tanır. Firestore her durumda aşağıdaki kurallarla tutarlı bir sıralamayı garanti eder:

  • orderBy, bir 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 alanlar, alan adının sözlükçe sıralamasına eklenir.
  • __name__ üzerindeki bir sipariş belirtilmezse varsayılan olarak eklenir.

Alanlar, belirtilen son düzenle aynı sıralama yönüyle veya herhangi bir sıra belirtilmediyse "ASCENDING" (ASCENDING) ile eklenir. Örneğin:

  • 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)

Sorgunun başlatılacağı sonuç kümesindeki bir konumun olası ön eki.

Sonuç kümesinin sıralaması, orijinal sorgunun ORDER BY yan tümcesine bağlıdır.

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ıralanmıştır.

İmleçler konumun tam sırasına veya ön ekine başvurabilir ancak sağlanan ORDER BY alanında bulunandan daha fazla alana başvuramaz.

Yukarıdaki örnekten devam edersek, aşağıdaki başlangıç imleçlerini eklemenin çeşitli etkileri olacaktır:

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

Atlamak için ilk N sonucun taranmasını gerektiren OFFSET'den farklı olarak, başlatma imleci, sorgunun mantıksal bir konumda başlamasını sağlar. Bu konum, gerçek bir sonuçla eşleşmesi gerekmez. Bir sonraki dokümanı bulmak için bu konumdan ileriye doğru tarar.

Gereken:

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

object (Cursor)

Sonuç kümesindeki bir konumun, sorguyu sonlandıracak potansiyel ön eki.

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

Gereken:

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

integer

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

Bu durum WHERE, START AT ve END AT tarafından belirtilen kısıtlamalardan sonra, ancak LIMIT yan tümcesinden önce geçerlidir.

Gereken:

  • Değer belirtilmişse 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 uygulanır.

Gereken:

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

object (FindNearest)

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

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

Verilen sorgu vektörüne en yakın vektör gömmelerini 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ş bırakılırsa tüm alanlar döndürülür. Yalnızca dokümanın adını döndürmek için ['__name__'] değerini kullanın.

CollectionSelector

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çer.

allDescendants

boolean

Yanlış olduğunda, yalnızca RunQueryRequest öğesini içeren parent öğesinin hemen alt öğeleri olan koleksiyonları seçer. Doğru değerine ayarlandığında tüm alt koleksiyonları seçer.

Filtre

Bir 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)

Bileşik bir filtre.

fieldFilter

object (FieldFilter)

Doküman alanında bir filtre.

unaryFilter

object (UnaryFilter)

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

CompositeFilter

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 çok filtreyi birleştirme operatörü.

filters[]

object (Filter)

Birleştirilecek filtrelerin listesi.

Gereken:

  • En az bir filtre mevcut.

Operatör

Kompozit filtre operatörü.

Sıralamalar
OPERATOR_UNSPECIFIED Belirtilmedi. Bu değer kullanılmamalıdır.
AND Birleştirilmiş filtrelerin tümünü karşılamak için belgeler gerekir.
OR Birleştirilmiş filtrelerden en az birinin şartlarını karşılamak için belgeler gerekir.

FieldFilter

Belirli bir alan üzerindeki bir 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)

Filtrelemede 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 küçük.

Gereken:

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

Belirtilen field, belirtilen value değerinden küçük veya ona eşit.

Gereken:

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

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

Gereken:

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

Belirtilen field, belirtilen value değerinden büyük veya ona eşit.

Gereken:

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

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

Gereken:

  • Başka NOT_EQUAL, NOT_IN, IS_NOT_NULL veya IS_NOT_NAN yok.
  • Bu field, orderBy sıralamasında ilk sırada.
ARRAY_CONTAINS Verilen field, belirtilen value değerini içeren bir dizidir.
IN

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

Gereken:

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

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

Gereken:

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

field değeri belirtilen dizide değil.

Gereken:

  • Bu value, en fazla 10 değer içeren, boş olmayan bir ArrayValue.
  • Başka OR, IN, ARRAY_CONTAINS_ANY, NOT_IN, NOT_EQUAL, IS_NOT_NULL veya IS_NOT_NAN yok.
  • Bu field, orderBy sıralamasında ilk sırada.

UnaryFilter

Tek bir işlenene sahip 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

Birli 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.

Gereken:

  • Başka NOT_EQUAL, NOT_IN, IS_NOT_NULL veya IS_NOT_NAN yok.
  • Bu field, orderBy sıralamasında ilk sırada.
IS_NOT_NULL

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

Gereken:

  • Tek bir NOT_EQUAL, NOT_IN, IS_NOT_NULL veya IS_NOT_NAN.
  • Bu field, orderBy sıralamasında ilk sırada.

Sipariş

Alandaki bir sıralama.

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.

FindNearest

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ş bir vektör alanı. Yalnızca, boyutları queryVector ile eşleşen vektörler içeren dokümanlar döndürülebilir.

queryVector

object (Value)

Zorunlu. Arama yaptığımız sorgu vektörü. 2048'den fazla boyutta olmayan bir vektör olmalıdır.

distanceMeasure

enum (DistanceMeasure)

Zorunlu. Kullanılacak Mesafe Ölçümü (gerekli).

limit

integer

Zorunlu. Döndürülecek en yakın komşuların sayısı. 1.000'den fazla olmayan pozitif bir tam sayı olmalıdır.

DistanceMeasure

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

Sıralamalar
DISTANCE_MEASURE_UNSPECIFIED Ayarlanmamalı.
EUCLIDEAN Vektörler arasındaki EUCLIDEAN mesafesini ölçer. Daha fazla bilgi edinmek için Öklid kavramını inceleyin
COSINE Vektörleri aralarındaki açıya göre karşılaştırır. Bu sayede, vektörlerin büyüklüğüne dayalı olmayan benzerliği ölçebilirsiniz. Daha iyi performansa sahip matematiksel eşdeğeri 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 için Dot Product bölümüne bakın.