Bộ sưu tập

Mô tả

Trả về tất cả tài liệu trong một tập hợp nhất định. Tập hợp có thể được lồng vào nhau.

Ví dụ

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();
Bắt đầu
snapshot := client.Pipeline().
	Collection("users/bob/games").
	Sort(firestore.Orders(firestore.Ascending(firestore.FieldOf("name")))).
	Execute(ctx)

Hành vi

Để sử dụng giai đoạn collection(...), giai đoạn này phải xuất hiện dưới dạng giai đoạn đầu tiên trong quy trình (hoặc quy trình phụ).

Thứ tự của các tài liệu được trả về từ giai đoạn collection(...) không ổn định và không đáng tin cậy. Firestore sẽ cố gắng thực thi truy vấn theo cách hiệu quả nhất có thể, điều này có thể thay đổi thứ tự tuỳ thuộc vào cấu hình giản đồ hoặc chỉ mục. Bạn có thể sử dụng giai đoạn sort(...) tiếp theo để có được thứ tự tất định.

Ví dụ: đối với các tài liệu sau:

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"});

Bạn có thể dùng giai đoạn collection để truy xuất tất cả thành phố trong tập hợp cities, sau đó sắp xếp các thành phố đó theo thứ tự tên tăng dần.

Node.js

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

Truy vấn này tạo ra các tài liệu sau:

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

Bộ sưu tập con

Bạn cũng có thể dùng giai đoạn collection(...) để nhắm đến các tập hợp trong một giai đoạn mẹ cụ thể bằng cách cung cấp đường dẫn đầy đủ đến giai đoạn đó.

Ví dụ: đối với các tài liệu sau:

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});

Trong ví dụ này, chúng ta chỉ muốn lấy các phòng ban của thành phố New York.

Node.js

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

Thao tác này sẽ trả về tất cả các phòng ban theo đường dẫn đầy đủ cities/NY/departments.

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