在Pymongo中选择find_one的最低/最高

时间:2013-11-14 17:35:52

标签: pymongo

我能做到

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

我假设find返回一个惰性迭代器,sort就地修改它,除非使用迭代器,否则不会获取任何数据。

但我希望find_one使用排序参数;在这种情况下,获取具有最高ID的文档。这种需求的正确用法是什么?

2 个答案:

答案 0 :(得分:0)

您无法使用find_one进行排序,因为find_one直接返回文档(或无)。因此,您可以将findsort一起使用,也可以使用聚合框架:

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

答案 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)