Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I create an index with pymongo [duplicate]

I want to enable text-search at a specific field in my Mongo DB. I want to implement this search in python (-> pymongo). When I follow the instructions given in the internet:

db.foo.ensure_index(('field_i_want_to_index', 'text'), name="search_index") 

I get the following error message:

    Traceback (most recent call last):     File "CVE_search.py", line 8, in <module>     db.foo.ensure_index(('field_i_want_to_index', 'text'), name="search_index")  File "/usr/local/lib/python2.7/dist-packages/pymongo/collection.py", line 1599, in ensure_index         return self.create_index(key_or_list, cache_for, **kwargs)       File "/usr/local/lib/python2.7/dist-packages/pymongo/collection.py", line 1466, in create_index         index_doc = helpers._index_document(keys)       File "/usr/local/lib/python2.7/dist-packages/pymongo/helpers.py", line 100, in _index_document             for (key, value) in index_list:     ValueError: too many values to unpack 

Is there a different/better way to create an index in pymongo?

like image 508
Maximilian Avatar asked Nov 05 '15 09:11

Maximilian


People also ask

How do you create an index in PyMongo?

Create an index for a MongoDB collection, and specify the order. When you use PyMongo to create an index, you can pair the index name with either a 1 or a -1 integer value to explicitly set the sort order to ascending or descending, respectively.

Can we create multiple index on same collection in MongoDB?

You can create multiple indexes on the same key(s) with different collations.

Can MongoDB have multiple indexes?

MongoDB can use the intersection of multiple indexes to fulfill queries. In general, each index intersection involves two indexes; however, MongoDB can employ multiple/nested index intersections to resolve a query.


1 Answers

Use the create_index method where you pass in the keys as an array and TEXT as the index direction :

collection.create_index([('field_i_want_to_index', pymongo.TEXT)], name='search_index', default_language='english') 
like image 87
chridam Avatar answered Sep 22 '22 20:09

chridam