0

我可以

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

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

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

4

2 回答 2

0

您不能find_one与排序一起使用,因为find_one直接返回文档(或无)。所以你可以使用findwithsort或者你可以使用聚合框架:

db.collection.aggregate([
    {$match: {node_type: {$regex: '^meta-'}}},
    {$sort: {id: -1}},
    {$limit: 1}
]);
于 2013-11-17T18:08:09.433 回答
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)
于 2013-11-18T20:45:15.240 回答