@@ -789,6 +789,97 @@ def eventual_consistent_query(client):
789
789
pass
790
790
791
791
792
+ def index_merge_queries (client ):
793
+ # Create a Photo entity to query
794
+ photo = datastore .Entity (client .key ('Photo' , 'sample_photo' ))
795
+
796
+ photo .update ({
797
+ 'owner_id' : 'user1234' ,
798
+ 'size' : 2 ,
799
+ 'coloration' : 2 ,
800
+ 'tag' : ['family' , 'outside' , 'camping' ]
801
+ })
802
+
803
+ client .put (photo )
804
+
805
+ # Sample queries using built-in indexes
806
+ queries = []
807
+
808
+ # [START datastore_built_in_index_queries]
809
+ query_owner_id = client .query (
810
+ kind = 'Photo' ,
811
+ filters = [('owner_id' , '=' , 'user1234' )])
812
+
813
+ query_size = client .query (
814
+ kind = 'Photo' ,
815
+ filters = [('size' , '=' , 2 )])
816
+
817
+ query_coloration = client .query (
818
+ kind = 'Photo' ,
819
+ filters = [('coloration' , '=' , 2 )])
820
+ # [END datastore_built_in_index_queries]
821
+
822
+ queries .append (query_owner_id )
823
+ queries .append (query_size )
824
+ queries .append (query_coloration )
825
+
826
+ # [START datastore_merged_index_query]
827
+ query_all_properties = client .query (
828
+ kind = 'Photo' ,
829
+ filters = [('owner_id' , '=' , 'user1234' ),
830
+ ('size' , '=' , 2 ),
831
+ ('coloration' , '=' , 2 ),
832
+ ('tag' , '=' , 'family' )])
833
+ # [END datastore_merged_index_query]
834
+
835
+ queries .append (query_all_properties )
836
+
837
+ # [START datastore_merged_index_tag_queries]
838
+ query_tag = client .query (
839
+ kind = 'Photo' ,
840
+ filters = [('tag' , '=' , 'family' ),
841
+ ('tag' , '=' , 'outside' ),
842
+ ('tag' , '=' , 'camping' )])
843
+
844
+ query_owner_size_color_tags = client .query (
845
+ kind = 'Photo' ,
846
+ filters = [('owner_id' , '=' , 'user1234' ),
847
+ ('size' , '=' , 2 ),
848
+ ('coloration' , '=' , 2 ),
849
+ ('tag' , '=' , 'family' ),
850
+ ('tag' , '=' , 'outside' ),
851
+ ('tag' , '=' , 'camping' )])
852
+ # [END datastore_merged_index_tag_queries]
853
+
854
+ queries .append (query_tag )
855
+ queries .append (query_owner_size_color_tags )
856
+
857
+ # [START datastore_owner_size_tag_query]
858
+ query_owner_size_tag = client .query (
859
+ kind = 'Photo' ,
860
+ filters = [('owner_id' , '=' , 'username' ),
861
+ ('size' , '=' , 2 ),
862
+ ('tag' , '=' , 'family' )])
863
+ # [END datastore_owner_size_tag_query]
864
+
865
+ queries .append (query_owner_size_tag )
866
+
867
+ # [START datastore_size_coloration_query]
868
+ query_size_coloration = client .query (
869
+ kind = 'Photo' ,
870
+ filters = [('size' , '=' , 2 ),
871
+ ('coloration' , '=' , 1 )])
872
+ # [END datastore_size_coloration_query]
873
+
874
+ queries .append (query_size_coloration )
875
+
876
+ results = []
877
+ for query in queries :
878
+ results .append (query .fetch ())
879
+
880
+ return results
881
+
882
+
792
883
def main (project_id ):
793
884
client = datastore .Client (project_id )
794
885
0 commit comments