0

我是 mongodb 的新手。并使用它进行简单的操作。我在数据库中创建了一个名为users的集合,它将有 2 个字段作为fNamelname。现在使用 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() 方法的第二个参数作为变量传递,还是必须直接传递ASCENDINGDESCENDING

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

4

1 回答 1

1

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

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

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

data = collection.find().sort(fieldname, validSortOrders[sortOrder])
于 2013-03-05T13:02:55.413 回答