Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 1ed0e86

Browse filesBrowse files
authored
Add snippet for Collection Group Query (GoogleCloudPlatform#2137)
* Add snippet for Collection Group Query * Bump `google-cloud-firestore` to 1.1.0 which includes the new functionality
1 parent 1701f7e commit 1ed0e86
Copy full SHA for 1ed0e86

File tree

Expand file treeCollapse file tree

3 files changed

+77
-2
lines changed
Filter options
Expand file treeCollapse file tree

3 files changed

+77
-2
lines changed
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
google-cloud-firestore==0.31.0
1+
google-cloud-firestore==1.1.0

‎firestore/cloud-client/snippets.py

Copy file name to clipboardExpand all lines: firestore/cloud-client/snippets.py
+62-1Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from time import sleep
1616

1717
from google.cloud import firestore
18-
from google.cloud.firestore_v1beta1 import ArrayRemove, ArrayUnion
18+
from google.cloud.firestore_v1 import ArrayRemove, ArrayUnion
1919
import google.cloud.exceptions
2020

2121

@@ -815,3 +815,64 @@ def delete_collection(coll_ref, batch_size):
815815
# [END delete_full_collection]
816816

817817
delete_collection(db.collection(u'cities'), 10)
818+
819+
820+
def collection_group_query(db):
821+
# [START fs_collection_group_query_data_setup]
822+
cities = db.collection(u'cities')
823+
824+
sf_landmarks = cities.document(u'SF').collection(u'landmarks')
825+
sf_landmarks.document().set({
826+
u'name': u'Golden Gate Bridge',
827+
u'type': u'bridge'
828+
})
829+
sf_landmarks.document().set({
830+
u'name': u'Legion of Honor',
831+
u'type': u'museum'
832+
})
833+
la_landmarks = cities.document(u'LA').collection(u'landmarks')
834+
la_landmarks.document().set({
835+
u'name': u'Griffith Park',
836+
u'type': u'park'
837+
})
838+
la_landmarks.document().set({
839+
u'name': u'The Getty',
840+
u'type': u'museum'
841+
})
842+
dc_landmarks = cities.document(u'DC').collection(u'landmarks')
843+
dc_landmarks.document().set({
844+
u'name': u'Lincoln Memorial',
845+
u'type': u'memorial'
846+
})
847+
dc_landmarks.document().set({
848+
u'name': u'National Air and Space Museum',
849+
u'type': u'museum'
850+
})
851+
tok_landmarks = cities.document(u'TOK').collection(u'landmarks')
852+
tok_landmarks.document().set({
853+
u'name': u'Ueno Park',
854+
u'type': u'park'
855+
})
856+
tok_landmarks.document().set({
857+
u'name': u'National Museum of Nature and Science',
858+
u'type': u'museum'
859+
})
860+
bj_landmarks = cities.document(u'BJ').collection(u'landmarks')
861+
bj_landmarks.document().set({
862+
u'name': u'Jingshan Park',
863+
u'type': u'park'
864+
})
865+
bj_landmarks.document().set({
866+
u'name': u'Beijing Ancient Observatory',
867+
u'type': u'museum'
868+
})
869+
# [END fs_collection_group_query_data_setup]
870+
871+
# [START fs_collection_group_query]
872+
museums = db.collection_group(u'landmarks')\
873+
.where(u'type', u'==', u'museum')
874+
docs = museums.get()
875+
for doc in docs:
876+
print(u'{} => {}'.format(doc.id, doc.to_dict()))
877+
# [END fs_collection_group_query]
878+
return docs

‎firestore/cloud-client/snippets_test.py

Copy file name to clipboardExpand all lines: firestore/cloud-client/snippets_test.py
+14Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,3 +255,17 @@ def test_listen_for_changes(capsys):
255255

256256
def test_delete_full_collection():
257257
snippets.delete_full_collection()
258+
259+
260+
@pytest.mark.skip(reason="Dependant on a composite index being created,"
261+
"however creation of the index is dependent on"
262+
"having the admin client and definition integrated"
263+
"into the test setup")
264+
# TODO: b/132092178
265+
def test_collection_group_query(db):
266+
museum_docs = snippets.collection_group_query(db)
267+
names = set([museum.name for museum in museum_docs])
268+
assert names == {u'Legion of Honor', u'The Getty',
269+
u'National Air and Space Museum',
270+
u'National Museum of Nature and Science',
271+
u'Beijing Ancient Observatory'}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.