【发布时间】:2018-12-20 02:08:21
【问题描述】:
我有一个数据库类,其中定义了多个方法,例如 find_one、find、update 等。示例如下:
@staticmethod
def find(collection, query):
return Database.DATABASE[collection].find(query)
要返回所有项目并将它们作为类元素返回,我稍后可以循环通过我在其他类中使用以下代码:
@classmethod
def all(cls):
return [cls(**elem) for elem in Database.find(ItemConstants.COLLECTION, {})]
我要做的是根据我正在传递的列名返回最小值:
@classmethod
def get_by_parameters(cls, name, category, url, size):
return [cls(**elem) for elem in Database.find(ItemConstants.COLLECTION,
{"name": name, "category": category, "url": url,
"size": size}).sort('time', pymongo.DESCENDING).limit(1)][0]
而且这项工作完全正常,并返回一个单一的类项。
但我正在努力解决的是我正在尝试在 Database 类中创建一个名为 find_min 的方法,这是该方法的代码: 数据库类:
@staticmethod
def find_min(collection, query, column):
Database.DATABASE[collection].find(query).sort({column: pymongo.ASCENDING}).limit(1)
这就是我使用另一种方法调用它的方式。
@classmethod
def get_by_parameters(cls, name, category, url, size):
return cls(**Database.find_min(ItemConstants.COLLECTION,
{"name": name, "category": category, "url": url,
"size": size}, 'time'))
它不起作用,我收到以下错误:
文件 "D:\python_projects\price_tracker\venv\lib\site-packages\pymongo\cursor.py", 第 676 行,排序键 = helpers._index_list(key_or_list, direction) 文件 "D:\python_projects\price_tracker\venv\lib\site-packages\pymongo\helpers.py", 第 63 行,在 _index_list 中引发 TypeError("如果没有指定方向, " TypeError: 如果没有指定方向,key_or_list 必须是 列表实例
【问题讨论】:
标签: python-3.x pymongo