0

私はmongodbが初めてです。そして、それを使用して簡単な操作を行います。データベースにusersという名前のコレクションを 1 つ作成しました。これにはfNamelnameの 2 つのフィールドがあります。現在、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() メソッドの 2 番目の引数を変数として渡すことができますか、または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 に答える