2013-02-05 17 views
10

これらを返す私のコレクション内のすべての文書である:Pymongoカーソルの上限は(1)1つの以上の結果

{ 
    "_id" : ObjectId("5110291e6ee1c31d5b275d01"), 
    "d" : 24, 
    "s" : [ 
     1, 
     2, 
     3 
    ] 
} 
{ 
    "_id" : ObjectId("511029266ee1c31d5b275d02"), 
    "d" : 24, 
    "s" : [ 
     4, 
     5, 
     6 
    ] 
} 
{ 
    "_id" : ObjectId("5110292e6ee1c31d5b275d03"), 
    "d" : 24, 
    "s" : [ 
     7, 
     8 
    ] 
} 

この私が実行したいクエリ:

mongo = get_collection(self.collection_name) 
res = mongo.find().sort([('_id', -1)]).skip(1).limit(1) 

get_collection()は、そのヘルパーメソッドです私は作った。カーソルを反復処理、resは、1つのドキュメントのみ生成します。

res = mongo.find().sort([('_id', -1)]).skip(1).limit(1) 
for document in res: 
    print document 

> {u's': [4.0, 5.0, 6.0], u'_id': ObjectId('511029266ee1c31d5b275d02'), u'd': 24.0} 

しかし、オフセット0番目と1番目の要素のための2つの異なるドキュメントを返す使用してRESアクセス:

res = mongo.find().sort([('_id', -1)]).skip(1).limit(1) 
pprint(res[0]) 
> {u'_id': ObjectId('511029266ee1c31d5b275d02'), u'd': 24.0, u's': [4.0, 5.0, 6.0]} 
pprint(res[1]) 
> {u'_id': ObjectId('5110291e6ee1c31d5b275d01'), u'd': 24.0, u's': [1.0, 2.0, 3.0]} 

が、これはバグですか? limit(1)は1つの結果しか返しませんか?

答えて

11

docsは、カーソルのインデックスアクセスについてこう述べています。

以前にこのカーソルに適用される任意の制限が無視されます。

関連する問題