1+ # start-index-single
2+ await movies .create_index ("title" )
3+ # end-index-single
4+
5+ # start-index-single-collation
6+ from pymongo .collation import Collation
7+
8+ await movies .create_index ("title" , collation = Collation (locale = 'fr_CA' ))
9+ # end-index-single-collation
10+
11+ # start-compound-index
12+ await movies .create_index ([("type" , pymongo .ASCENDING ), ("genre" , pymongo .ASCENDING )])
13+ # end-compound-index
14+
15+ # start-compound-index-collation
16+ from pymongo .collation import Collation
17+
18+ await movies .create_index ([("type" , pymongo .ASCENDING ), ("genre" , pymongo .ASCENDING )],
19+ collation = Collation (locale = 'fr_CA' ))
20+ # end-compound-index-collation
21+
22+ # start-index-multikey
23+ result = await movies .create_index ("cast" )
24+ # end-index-multikey
25+
26+ # start-index-multikey-collation
27+ from pymongo .collation import Collation
28+
29+ result = await movies .create_index ("cast" , collation = Collation (locale = 'fr_CA' ))
30+ # end-index-multikey-collation
31+
32+ # start-index-text-single
33+ await movies .create_index (
34+ [( "plot" , "text" )]
35+ )
36+ # end-index-text-single
37+
38+ # start-index-text-single-collation
39+ from pymongo .collation import Collation
40+
41+ await movies .create_index (
42+ [( "plot" , "text" )],
43+ collation = Collation (locale = 'fr_CA' )
44+ )
45+ # end-index-text-single-collation
46+
47+ # start-index-text-multi
48+ from pymongo .collation import Collation
49+
50+ result = await myColl .create_index (
51+ [("title" , "text" ), ("genre" , "text" )],
52+ default_language = "english" ,
53+ weights = { "title" : 10 , "genre" : 3 },
54+ collation = Collation (locale = 'fr_CA' )
55+ )
56+ # end-index-text-multi
57+
58+ # start-index-geo
59+ await theaters .create_index (
60+ [( "location.geo" , "2dsphere" )]
61+ )
62+ # end-index-geo
63+
64+ # start-index-geo-collation
65+ from pymongo .collation import Collation
66+
67+ await theaters .create_index (
68+ [( "location.geo" , "2dsphere" )],
69+ collation = Collation (locale = 'fr_CA' ))
70+ # end-index-geo-collation
71+
72+ # start-index-wildcard
73+ await movies .create_index ({ "location.$**" : pymongo .ASCENDING })
74+ # end-index-wildcard
75+
76+ # start-index-wildcard-collation
77+ await movies .create_index ({ "location.$**" : pymongo .ASCENDING },
78+ collation = Collation (locale = 'fr_CA' ))
79+ # end-index-wildcard-collation
80+
81+ # start-index-unique
82+ await theaters .create_index ("theaterId" , unique = True )
83+ # end-index-unique
84+
85+ # start-index-unique-collation
86+ await theaters .create_index ("theaterId" , unique = True , collation = Collation (locale = 'fr_CA' ))
87+ # end-index-unique-collation
88+
89+ # start-index-clustered
90+ await sample_mflix .create_collection ("movies" , clusteredIndex = {
91+ "key" : { "_id" : 1 },
92+ "unique" : True
93+ })
94+ # end-index-clustered
95+
96+ # start-remove-index
97+ await movies .drop_index ("_title_" )
98+ # end-remove-index
99+
100+ # start-create-search-index
101+ index = {
102+ "definition" : {
103+ "mappings" : {
104+ "dynamic" : True
105+ }
106+ },
107+ "name" : "<index name>" ,
108+ }
109+
110+ await collection .create_search_index (index )
111+ # end-create-search-index
112+
113+ # start-create-vector-search-index
114+ from pymongo .operations import SearchIndexModel
115+
116+ search_index_model = SearchIndexModel (
117+ definition = {
118+ "fields" : [
119+ {
120+ "type" : "vector" ,
121+ "numDimensions" : < number of dimensions > ,
122+ "path" : "<field to index>" ,
123+ "similarity" : "<select from euclidean, cosine, dotProduct>"
124+ }
125+ ]
126+ },
127+ name = "<index name>" ,
128+ type = "vectorSearch" ,
129+ )
130+
131+ await collection .create_search_index (model = search_index_model )
132+ # end-create-vector-search-index
133+
134+ # start-create-search-indexes
135+ search_idx = SearchIndexModel (
136+ definition = {
137+ "mappings" : {
138+ "dynamic" : True
139+ }
140+ },
141+ name = "my_index" ,
142+ )
143+
144+ vector_idx = SearchIndexModel (
145+ definition = {
146+ "fields" : [
147+ {
148+ "type" : "vector" ,
149+ "numDimensions" : < number of dimensions > ,
150+ "path" : "<field to index>" ,
151+ "similarity" : "<select from euclidean, cosine, dotProduct>"
152+ }
153+ ]
154+ },
155+ name = "my_vector_index" ,
156+ type = "vectorSearch" ,
157+ )
158+
159+ indexes = [search_idx , vector_idx ]
160+
161+ await collection .create_search_indexes (models = indexes )
162+ # end-create-search-indexes
163+
164+ # start-list-search-indexes
165+ results = await (await collection .list_search_indexes ()).to_list ()
166+
167+ async for index in results :
168+ print (index )
169+ # end-list-search-indexes
170+
171+ # start-update-search-indexes
172+ new_index_definition = {
173+ "mappings" : {
174+ "dynamic" : False
175+ }
176+ }
177+
178+ await collection .update_search_index ("my_index" , new_index )
179+ # end-update-search-indexes
180+
181+ # start-update-vector-search-indexes
182+ new_index_definition = {
183+ "fields" : [
184+ {
185+ "type" : "vector" ,
186+ "numDimensions" : 1536 ,
187+ "path" : "<field to index>" ,
188+ "similarity" : "euclidean"
189+ },
190+ ]
191+ }
192+
193+ await collection .update_search_index ("my_vector_index" , new_index_definition )
194+ # end-update-vector-search-indexes
195+
196+ # start-delete-search-indexes
197+ await collection .drop_search_index ("my_index" )
198+ # end-delete-search-indexes
0 commit comments