firestore: order and limit data

Order and Limit Data with Cloud Firestore

Cloud Firestore provides powerful query functionality for specifying which documents you want to retrieve from a collection. These queries can also be used with either get() or addSnapshotListener(), as described in Get Data.

Note:
  • While the code samples cover multiple languages, the text explaining the samples refers to the Web method names.

Order and limit data

Cloud Firestore also lets you specify the sort order for your data and specify a limit to how many documents you want to retrieve using orderBy() and limit(). For example, you could query for the first 3 cities alphabetically with:

WEB
SWIFT
OBJECTIVE-C
ANDROID
JAVA
PYTHON
MORE
 
  
[[ citiesRef queryOrderedByField :@ "name" ] queryLimitedTo : 3 ];
 

You could also sort in descending order to get the last 3 cities:

WEB
SWIFT
OBJECTIVE-C
ANDROID
JAVA
PYTHON
MORE
 
  
[[ citiesRef queryOrderedByField :@ "name" descending : YES ] queryLimitedTo : 3 ];
 

You can also order by multiple fields. For example, if you wanted to order by state, and within each state order by population in descending order:

WEB
SWIFT
OBJECTIVE-C
ANDROID
JAVA
PYTHON
MORE
 
  
[[ citiesRef queryOrderedByField :@ "state" ] queryOrderedByField :@ "population" descending : YES ];
 

You can combine where() filters with orderBy() and limit(). In the following example, the queries define a population threshold, sort by population in ascending order, and return only the first few results that exceed the threshold:

WEB
SWIFT
OBJECTIVE-C
ANDROID
JAVA
PYTHON
MORE
 
  
[[[ citiesRef queryWhereField :@ "population" isGreaterThan :@ 100000 ]
    queryOrderedByField
:@ "population" ]
    queryLimitedTo
: 2 ];
 

However, if you have a filter with a range comparison (<<=>>=), your first ordering must be on the same field:

Valid: Range filter and orderBy on the same field

WEB
SWIFT
OBJECTIVE-C
ANDROID
JAVA
PYTHON
MORE
 
  
[[ citiesRef queryWhereField :@ "population" isGreaterThan :@ 100000 ]
    queryOrderedByField
:@ "population" ];
 

Invalid: Range filter and first orderBy on different fields

WEB
SWIFT
OBJECTIVE-C
ANDROID
JAVA
PYTHON
MORE
 
  
[[ citiesRef queryWhereField :@ "population" isGreaterThan :@ 100000 ] queryOrderedByField :@ "country" ];
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值