Mô tả
Trả về các tài liệu bằng cách tra cứu một tập hợp cố định gồm các tài liệu được xác định trước.
Giai đoạn này phải lấy một hoặc nhiều tài liệu làm dữ liệu đầu vào và không được chứa các tài liệu có đường dẫn trùng lặp. Nếu một tài liệu được tham chiếu không tồn tại, thì sẽ không có kết quả nào được tạo cho đường dẫn tài liệu đó.
Giai đoạn này hoạt động tương tự như batchGet của Cloud Firestore và cho phép lọc trực tiếp kết quả thay vì thực hiện các bước lọc sau khi thao tác hàng loạt.
Ví dụ
Web
const results = await execute(db.pipeline() .documents([ doc(db, "cities", "SF"), doc(db, "cities", "DC"), doc(db, "cities", "NY") ]) );
Swift
let results = try await db.pipeline() .documents([ db.collection("cities").document("SF"), db.collection("cities").document("DC"), db.collection("cities").document("NY") ]).execute()
Kotlin
val results = db.pipeline() .documents( db.collection("cities").document("SF"), db.collection("cities").document("DC"), db.collection("cities").document("NY") ).execute()
Java
Task<Pipeline.Snapshot> results = db.pipeline() .documents( db.collection("cities").document("SF"), db.collection("cities").document("DC"), db.collection("cities").document("NY") ).execute();
Python
results = ( client.pipeline() .documents( client.collection("cities").document("SF"), client.collection("cities").document("DC"), client.collection("cities").document("NY"), ) .execute() )
Java
Pipeline.Snapshot results = firestore .pipeline() .documents( firestore.collection("cities").document("SF"), firestore.collection("cities").document("DC"), firestore.collection("cities").document("NY")) .execute() .get();
Bắt đầu
snapshot := client.Pipeline(). Documents([]*firestore.DocumentRef{ client.Collection("cities").Doc("SF"), client.Collection("cities").Doc("DC"), client.Collection("cities").Doc("NY"), }). Execute(ctx)
Hành vi
Để sử dụng giai đoạn documents(...), 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.
Thứ tự của các tài liệu được trả về từ giai đoạn documents(...) không ổn định và không thể dựa vào. Bạn có thể dùng giai đoạn sort(...) tiếp theo để có được thứ tự xác đị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"});
Bạn có thể dùng giai đoạn documents(...) để chỉ truy xuất các tài liệu SF và NYC, sau đó sắp xếp các tài liệu này theo thứ tự tăng dần của tên.
Node.js
const results = await db.pipeline()
.documents(
db.collection("cities").doc("SF"),
db.collection("cities").doc("NYC"))
.sort(field("name").ascending())
.execute();
Truy vấn này tạo ra các tài liệu sau:
{ name: "New York City", state: "New York" }
{ name: "San Francsico", state: "California" }