我可以
db.find({'node_type': {'$regex':'^meta-'}}).sort("id", pymongo.DESCENDING)
我假设find
返回一个惰性迭代器并sort
就地修改它,除非使用迭代器,否则不会获取任何数据。
但我想使用find_one
排序参数;在这种情况下,获取具有最高 ID 的文档。这种需求的正确用法是什么?
我可以
db.find({'node_type': {'$regex':'^meta-'}}).sort("id", pymongo.DESCENDING)
我假设find
返回一个惰性迭代器并sort
就地修改它,除非使用迭代器,否则不会获取任何数据。
但我想使用find_one
排序参数;在这种情况下,获取具有最高 ID 的文档。这种需求的正确用法是什么?
您不能find_one
与排序一起使用,因为find_one
直接返回文档(或无)。所以你可以使用find
withsort
或者你可以使用聚合框架:
db.collection.aggregate([
{$match: {node_type: {$regex: '^meta-'}}},
{$sort: {id: -1}},
{$limit: 1}
]);
你可以使用一个简单的.limit(1)
db.find({'node_type': {'$regex':'^meta-'}}).limit(1).sort("_id", -1)
或者
db.find({'node_type': {'$regex':'^meta-'}}, limit=1).sort("_id", -1)