2013-03-05 49 views
0

我是新来的mongodb。并将其用于简单的操作。我在数据库中创建了一个名为用户的集合,它将有2个字段为fName & lname。现在使用python(.py文件)我显示所有记录。该代码是 -升序和降序不工作,而作为在python中的mongodb参数传递

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

的代码的最后一行缺少一个'...姓氏:%s'后结束报价# – William 2013-03-05 13:13:00

回答

1

我想sortOrder是一个字符串,并且ASCENDING和DESCENDING是从pymongo模块导入的常量。在将它传递给sort方法之前,您必须将sortOrder参数映射到该常量。您可以定义词典与有效值中将sortOrder:

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

之前通过排序顺序排序方法你从字典中的值:

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

哇...它的工作。感谢也+1。 – Workonphp 2013-03-05 13:21:21