我是mongodb的新手。并使用它进行简单的操作。我在数据库中创建了一个名为 users 的集合,它将包含2个字段 fName &的 L-NAME 即可。现在使用python(.py文件)我显示所有记录。代码是 -
from pymongo import Connection
from pymongo import ASCENDING, DESCENDING
from sys import argv
#making new connection
connection = Connection()
#mydb is the database name
db = connection.mydb
# usersis the collection name
collection = db.users
data = collection.find()
if len(argv) > 2:
script, fieldname, sortOrder = argv
data = collection.find().sort(fieldname,sortOrder)
#printing data
for each_data in data:
print 'First Name: %s, Last Name: %s % (each_data['fname'],each_data['lname'])
现在的问题是,如果我通过命令行传递 sortOrder 作为参数,它就不会接受它,结果将是正常的(没有任何排序)。
我们可以将.sort()方法的第二个arg作为变量传递,或者我们必须直接传递 ASCENDING , DESCENDING 。
任何人都可以告诉解决方案。
答案 0 :(得分:1)
我认为sortOrder是一个字符串,ASCENDING和DESCENDING是从pymongo模块导入的常量。您必须先将sortOrder参数映射到常量,然后才能将其传递给sort方法。您可以使用sortOrder的有效值定义字典:
validSortOrders = {'ascending': ASCENDING, 'descending': DESCENDING}
在将排序顺序传递给sort方法之前,您可以从字典中获取值:
data = collection.find().sort(fieldname, validSortOrders[sortOrder])