17

user_scoreキーを使用して呼び出されたコレクションを並べ替えてposition、結果の最初のドキュメントを取得しようとしています。この場合、コレクションuser_scoreは存在せず、結果をとして取得したいと思っていましNoneたが、カーソルが戻ってきました。

1.結果=

db.user_score.find({'score':'$lt':score}}).sort("position,pymongo.DESCENDING").limit(1)

今、私は私のクエリを以下のように変更しましたが、期待どおりに何も得られませんでした。

2.結果=

db.user_score.find_one({'score':{'$lt':score}}, sort=[("position", pymongo.DESCENDING)])

私の最初のクエリの問題は何ですか?

ありがとう

4

4 に答える 4

15

最初のクエリでは、並べ替え関数で 1 つの引数を渡していますが("position,pymongo.DESCENDING")、2 つの引数を渡す必要があります("position", pymongo.DESCENDING)

引用符に注意してください。

于 2012-12-27T15:59:25.447 に答える
2

これは、検索時の mongodb のデフォルトの動作です。を使用するたびfindに、結果のリストを取得します (この場合は反復可能なカーソル)。クエリに一致するものがない場合のみfindOne、またはそれと同等の PyMongofind_oneが返されます。None

于 2012-04-09T20:31:50.063 に答える
-3

list を使用して、カーソルの値を dict に変換します。

list(db.user_score.find({'score':'$lt':score}}).sort("position",pymongo.DESCENDING).limit(1))[0]

于 2016-09-30T00:20:45.197 に答える