2016-04-14 2 views
0

Я пытаюсь написать геопространственные запросы. Я использую мотор для подключения к MongoDB. Это как я вставляю данные.Как создать индекс 2dsphere в двигателе.

result = yield db['users'].find_and_modify(query={"email": data['email'], "password": data['password']}, 
               update={"$set": { 
                "location": {"coordinates": {"longitude": data['longitude'], 
                       "latitude": data['latitude']}}}}, 
               upsert=True) 

Но я не могу создать индекс для этого поля. Стараюсь:

yield db.users.create_index({"location": "2dsphere"}) 

Но у меня есть ошибка

TypeError: if no direction is specified, key_or_list must be an instance of list ERROR:tornado.access:500 GET

+0

Вы примете мой ответ как правильный, или есть что-то еще, что я могу вам помочь? –

ответ

2

То же PyMongo, плюс "выход":

yield db.users.create_index([("location", "2dsphere")]) 

питон драйверы для MongoDB требуют список кортежей, а не dict, при создании индекса, потому что порядок ключей имеет значение, а dicts не сохраняют порядок клавиш.

Смежные вопросы