8000 Add snippet for Collection Group Query (#2137) · wesleykerr/python-docs-samples@1ed0e86 · GitHub
[go: up one dir, main page]

Skip to content

Commit 1ed0e86

Browse 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

File tree

3 files changed

+77
-2
lines changed

3 files changed

+77
-2
lines changed
Lines 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

Lines 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

Lines 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