使用查询游标将数据分页
通过在 Cloud Firestore 中使用查询游标,您可以根据在查询中定义的参数将返回的数据分成多个批次。
查询游标定义了查询的起点和终点,并让您可以:
- 返回数据的子集。
- 将查询结果分页。
但是,如需为查询定义特定的范围,您应该使用 where() 方法(具体说明请参阅简单查询)。
向查询中添加简单游标
使用 startAt() 或 startAfter() 方法定义查询的起点。startAt() 方法包含起点,而 startAfter() 方法则不包含起点。
例如,如果您在查询中使用 startAt(A),该查询会返回整个字母表。如果您改为使用 startAfter(A),则该查询会返回 B-Z。
Web
import { query, orderBy, startAt } from "firebase/firestore";
const q = query(citiesRef, orderBy("population"), startAt(1000000));
order_and_start.js
Web
citiesRef.orderBy("population").startAt(1000000);
test.firestore.js
Swift
注意:此产品不适用于 watchOS 和 App Clip 目标。
// Get all cities with population over one million, ordered by population.
db.collection("cities")
.order(by: "population")
.start(at: [1000000])
ViewController.swift
Objective-C
注意:此产品不适用于 watchOS 和 App Clip 目标。
// Get all cities with population over one million, ordered by population.
[[[db collectionWithPath:@"cities"]
queryOrderedByField:@"population"]
queryStartingAtValues:@[ @1000000 ]];
ViewController.m
Kotlin
// Get all cities with a population >= 1,000,000, ordered by population,
db.collection("cities")
.orderBy("population")
.startAt(1000000)
DocSnippets.kt
Java
// Get all cities with a population >= 1,000,000, ordered by population,
db.collection("cities")
.orderBy("population")
.startAt(1000000);
DocSnippets.java
Dart
db.collection("cities").orderBy("population").startAt([1000000]);
firestore.dart
Java
Query query = cities.orderBy("population").startAt(4921000L);
QueryDataSnippets.java
Python
cities_ref = db.collection("cities")
query_start_at = cities_ref.order_by("population").start_at({"population": 1000000})
snippets.py
Python
cities_ref = db.collection("cities")
query_start_at = cities_ref.order_by("population").start_at({"population": 1000000})
snippets.py
C++
// Get all cities with a population >= 1,000,000, ordered by population,
db->Collection("cities")
.OrderBy("population")
.StartAt({FieldValue::Integer(1000000)});
snippets.cpp
Node.js
const startAtRes = await db.collection('cities')
.orderBy('population')
.startAt(1000000)
.get();
index.js
Go
query := client.Collection("cities").OrderBy("population", firestore.Asc).StartAt(1000000)
query.go
PHP
PHP
如需详细了解如何安装和创建 Cloud Firestore 客户端,请参阅 Cloud Firestore 客户端库。
$query = $citiesRef
->orderBy('population')
->startAt([1000000]);
query_cursor_start_at_field_value_single.php
