Koleksiyon

Açıklama

Belirli bir koleksiyondaki tüm dokümanları döndürür. Koleksiyonlar iç içe yerleştirilebilir.

Örnekler

Web

const results = await execute(db.pipeline()
  .collection("users/bob/games")
  .sort(field("name").ascending())
  );
Swift
let results = try await db.pipeline()
  .collection("users/bob/games")
  .sort([Field("name").ascending()])
  .execute()

Kotlin

val results = db.pipeline()
    .collection("users/bob/games")
    .sort(field("name").ascending())
    .execute()

Java

Task<Pipeline.Snapshot> results = db.pipeline()
    .collection("users/bob/games")
    .sort(field("name").ascending())
    .execute();
Python
from google.cloud.firestore_v1.pipeline_expressions import Field

results = (
    client.pipeline()
    .collection("users/bob/games")
    .sort(Field.of("name").ascending())
    .execute()
)
Java
Pipeline.Snapshot results =
    firestore
        .pipeline()
        .collection("users/bob/games")
        .sort(ascending(field("name")))
        .execute()
        .get();
Go
snapshot := client.Pipeline().
	Collection("users/bob/games").
	Sort(firestore.Orders(firestore.Ascending(firestore.FieldOf("name")))).
	Execute(ctx)

Davranış

collection(...) aşamasını kullanmak için bu aşama, ardışık düzende (veya alt ardışık düzende) ilk aşama olarak görünmelidir.

collection(...) aşamasından döndürülen belgelerin sırası kararsızdır ve güvenilir değildir. Firestore, sorguyu mümkün olan en verimli şekilde yürütmeye çalışır. Bu durum, şemaya veya dizin yapılandırmasına bağlı olarak sırayı değiştirebilir. Belirleyici bir sıralama elde etmek için sonraki sort(...) aşaması kullanılabilir.

Örneğin, aşağıdaki belgeler için:

Node.js

await db.collection("cities").doc("SF").set({name: "San Francsico", state: "California"});
await db.collection("cities").doc("NYC").set({name: "New York City", state: "New York"});
await db.collection("cities").doc("CHI").set({name: "Chicago", state: "Illinois"});
await db.collection("states").doc("CA").set({name: "California"});

collection aşaması, cities koleksiyonundaki tüm şehirleri almak ve ardından bunları ada göre artan sırada sıralamak için kullanılabilir.

Node.js

const results = await db.pipeline()
  .collection("/cities")
  .sort(field("name").ascending())
  .execute();

Bu sorgu aşağıdaki belgeleri oluşturur:

  { name: "Chicago", state: "Illinois" }
  { name: "New York City", state: "New York" }
  { name: "San Francisco", state: "California" }

Alt koleksiyonlar

Aşamanın tam yolu sağlanarak belirli bir üst öğe altındaki koleksiyonları hedeflemek için de collection(...) aşaması kullanılabilir.

Örneğin, aşağıdaki belgeler için:

Node.js

await db.collection("cities/SF/departments").doc("building").set({name: "SF Building Deparment", employees: 750});
await db.collection("cities/NY/departments").doc("building").set({name: "NY Building Deparment", employees: 1000});
await db.collection("cities/CHI/departments").doc("building").set({name: "CHI Building Deparment", employees: 900});
await db.collection("cities/NY/departments").doc("finance").set({name: "NY Finance Deparment", employees: 1200});

Bu örnekte, yalnızca New York şehrindeki departmanları istiyoruz.

Node.js

const results = await db.pipeline()
  .collection("/cities/NY/departments")
  .sort(field("employees").ascending())
  .execute();

Bu işlem, tam yol cities/NY/departments altındaki tüm departmanları döndürür.

  { name: "NY Building Deparment", employees: 1000 }
  { name: "NY Finance Deparment", employees: 1200 }