Индексирование Пимонго с геосферой - PullRequest
0 голосов
/ 15 ноября 2018

Здравствуйте и спасибо заранее за ваше время. Я новичок в MongoDB и Pymongo и у меня есть следующий код, который предоставляет мне тип ошибки: «недостаточно аргументов для строки формата» при попытке индексации.

import pymongo

connection = pymongo.MongoClient("localhost",27017)
collection = connection.labdb.hotels

def execute_query(query):
    for doc in collection.find(query):
        print(doc)

execute_query(query1)

collection.create_index(["location",pymongo.GEOSPHERE])
points=[[-122, 35], [-120, 35], [-120, 38], [-122, 38], [-122, 35]]
within = {"$geoWithin":{"$geometry" : {"type" : "Polygon", coordinates: 
[[[]]]}}}
query2 = {"location": within}
execute_query(query2) 

Скрипт работает на 3.7 редакторе spyder и был ранее протестирован и успешно работал на 2.7 Python Ver. Любая помощь очень ценится

1 Ответ

0 голосов
/ 15 ноября 2018

Вы забыли кортеж в списке create_index:

collection.create_index([("location",pymongo.GEOSPHERE)])

, а в строке 'inside' вы забыли отметки в "координатах" (также, вероятно, забыли переменную точек внутри координат):

within = {"$geoWithin":{"$geometry" : {"type" : "Polygon", "coordinates": [points]}}}
...