2013-03-05 50 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