2013-11-14 59 views
0

find_one最高我可以做選擇最低/在Pymongo

db.find({'node_type': {'$regex':'^meta-'}}).sort("id", pymongo.DESCENDING) 

我認爲find返回一個懶惰的迭代器和sort修改它原地的,除非使用了迭代器沒有數據被取出。

但我想用排序參數find_one;在這種情況下,請獲取ID最高的文檔。這種需求的正確用法是什麼?

回答

0

您不能使用find_one進行排序,因爲find_one直接返回文檔(或無)。所以,你可以使用findsort或者你可以使用聚合框架:

db.collection.aggregate([ 
    {$match: {node_type: {$regex: '^meta-'}}}, 
    {$sort: {id: -1}}, 
    {$limit: 1} 
]); 
0

您可以使用一個簡單的.limit(1)

db.find({'node_type': {'$regex':'^meta-'}}).limit(1).sort("_id", -1) 

db.find({'node_type': {'$regex':'^meta-'}}, limit=1).sort("_id", -1)