在createIndex
的文档中,他们说db.collection.createIndex(keys, options)
,所以我用下面的代码调用createIndex()
。我的数据库的名称为articles
,集合的名称为bce
。在bce
内部,已经有一个字段为article
的文档。
class Stockage():
def __init__(self):
self.connexion()
def connexion(self):
client = pymongo.MongoClient("localhost", 27017)
self.bce = client.articles.bce
sql = Stockage()
sql.bce.createIndex({article : "text"})
我有以下错误:
Traceback (most recent call last):
File "<ipython-input-1132-fc8762d315d1>", line 1, in <module>
sql.bce.createIndex({article : "text"})
File "C:\ProgramData\Anaconda3\lib\site-packages\pymongo\collection.py", line 3321, in __call__
self.__name.split(".")[-1])
TypeError: 'Collection' object is not callable. If you meant to call the 'createIndex' method on a 'Collection' object it is failing because no such method exists.
不是bce
的收藏吗?
答案 0 :(得分:2)
这是因为在Pymongo中,该方法被称为create_index()
而不是createIndex()
,因为它是在mongo
shell中命名的。
与mongo
shell对应的参数格式不同。它不接受文档/字典作为索引规范,而是接受元组列表。这是因为您不能保证Python中字典键的顺序。
因此正确的行应为:
sql.bce.create_index([("article", pymongo.TEXT)])
更多详细信息,请访问Pymongo Collection页面。