在使用python的mongodb中作为参数传递时,升序和降序不起作用

时间:2013-03-05 12:55:09

标签: python mongodb python-2.7 pymongo

我是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

任何人都可以告诉解决方案。

1 个答案:

答案 0 :(得分:1)

我认为sortOrder是一个字符串,ASCENDING和DESCENDING是从pymongo模块导入的常量。您必须先将sortOrder参数映射到常量,然后才能将其传递给sort方法。您可以使用sortOrder的有效值定义字典:

validSortOrders = {'ascending': ASCENDING, 'descending': DESCENDING}

在将排序顺序传递给sort方法之前,您可以从字典中获取值:

data = collection.find().sort(fieldname, validSortOrders[sortOrder])