0

我尝试编写地理空间查询。我使用电机连接到 MongoDB。这就是我插入数据的方式。

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:如果没有指定方向,key_or_list 必须是列表 ERROR:tornado.access:500 GET 的实例

4

1 回答 1

2

与 PyMongo 相同,加上“产量”:

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

MongoDB 的 Python 驱动程序在创建索引时需要元组列表,而不是字典,因为键顺序很重要,字典不保留键顺序。

于 2016-04-14T19:54:36.127 回答