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" ];
 

猜你喜欢

转载自blog.csdn.net/leonqiu/article/details/79428109