我能做到
db.find({'node_type': {'$regex':'^meta-'}}).sort("id", pymongo.DESCENDING)
我假设find
返回一个惰性迭代器,sort
就地修改它,除非使用迭代器,否则不会获取任何数据。
但我希望find_one
使用排序参数;在这种情况下,获取具有最高ID的文档。这种需求的正确用法是什么?
答案 0 :(得分:0)
您无法使用find_one
进行排序,因为find_one
直接返回文档(或无)。因此,您可以将find
与sort
一起使用,也可以使用聚合框架:
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)