升序和降序不工作,而作为在python中的mongodb参数传递
问题描述:
我是新来的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。
任何人都可以告诉解决方案。
答
我想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
的代码的最后一行缺少一个'...姓氏:%s'后结束报价# – William 2013-03-05 13:13:00