文档首页 → 开发应用程序 → Python 驱动程序 → PyMongo
指定返回的文档
概述
在本指南中,您可以通过以下方法学习如何通过以下方法指定从读取操作返回哪些文档
limit()
:指定查询返回的最大文档数。sort()
:指定返回文档的排序顺序。skip()
:指定在返回查询结果之前要跳过的文档数。
示例数据
本指南中的示例使用来自Atlas 示例数据集的sample_restaurants.restaurants
集合。要了解如何创建免费的 MongoDB Atlas 集群并加载数据集,请参阅使用 PyMongo 开始。
限制
要指定从读取操作返回的最大文档数,请调用limit()
方法。
以下示例找到所有具有cuisine
字段值为"意大利"
的餐厅,并将结果限制为5个文档
results = restaurants.find({ "cuisine" : "Italian"}).limit(5) for restaurant in results: print(restaurant["name"])
Isle Of Capri Resturant Italian Arturo'S Italian Patsy'S Italian Restaurant Italian Piccola Venezia Italian Roadhouse Restaurant Italian
您还可以通过在您的find()
方法中指定limit
参数来限制返回的文档数
results = restaurants.find({ "cuisine" : "Italian"}, limit=5) for restaurant in results: print(restaurant["name"])
Isle Of Capri Resturant Italian Arturo'S Italian Patsy'S Italian Restaurant Italian Piccola Venezia Italian Roadhouse Restaurant Italian
提示
前面示例返回查询返回的前五份文档,顺序无关。以下部分描述如何按指定顺序返回文档。
排序
要按指定顺序返回文档,请调用sort()
方法。该方法接受两个参数:用于排序的字段和排序方向。要指定排序方向,指定pymongo.ASCENDING
或pymongo.DESCENDING
。ASCENDING
按从低到高的顺序排序值,而DESCENDING
则按从高到低的顺序排序。如果您没有指定方向,该方法默认为升序排序。
以下示例返回所有具有cuisine
值为"Italian"
的文档,并按升序排序
results = restaurants.find({ "cuisine" : "Italian"}).sort("name", pymongo.ASCENDING) for restaurant in results: print(restaurant["name"])
(Lewis Drug Store) Locanda Vini E Olii 101 Restaurant And Bar 44 Sw Ristorante & Bar 900 Park A Voce ... Zucchero E Pomodori
您还可以通过在find()
方法中指定sort
参数来对文档进行排序。以下示例指定sort
参数以返回与前面示例相同的顺序
results = restaurants.find({ "cuisine" : "Italian"}, sort={"name": pymongo.ASCENDING} ) for restaurant in results: print(restaurant["name"])
(Lewis Drug Store) Locanda Vini E Olii 101 Restaurant And Bar 44 Sw Ristorante & Bar 900 Park A Voce ... Zucchero E Pomodori
跳过
要跳过指定数量的文档然后再返回查询结果,请调用skip()
方法并传入要跳过的文档数。skip()
方法会忽略查询结果中指定的文档数,并返回其余的文档。
以下示例返回所有具有borough
字段值为"Manhattan"
的文档,并跳过前10个文档
results = restaurants.find({ "borough" : "Manhattan"}).skip(10) for restaurant in results: print(restaurant["name"])
Dorrian'S Red Hand Restaurant The Princeton Club Moran'S Chelsea La Parisienne Diner Jimmy'S Corner ...
您还可以通过使用find()
方法的skip
参数来跳过返回的文档。以下示例指定与前面示例相同的跳过数
results = restaurants.find({ "borough" : "Manhattan"}, skip=10) for restaurant in results: print(restaurant["name"])
Dorrian'S Red Hand Restaurant The Princeton Club Moran'S Chelsea La Parisienne Diner Jimmy'S Corner ...
结合限制、排序和跳过
您可以在单个操作中组合limit()
、sort()
和skip()
方法。这允许您设置返回的最大排序文档数,并在返回之前跳过指定数量的文档。
以下示例返回具有cuisine
值为"Italian"
的文档。结果按字母顺序排序,跳过前10个文档
results = restaurants.find({ "cuisine" : "Italian"}) \ .sort("name", pymongo.ASCENDING) \ .limit(5) \ .skip(10) for restaurant in results: print(restaurant["name"])
Acqua Acqua Restaurant Acqua Santa Acquista Trattoria Acquolina Catering
注意
调用这些方法的顺序不会改变返回的文档。驱动程序会自动重新排序调用以先执行排序和跳过操作,然后是限制操作。
您还可以通过在find()
方法中指定它们作为参数来限制、排序和跳过结果。以下示例指定与前面示例相同的查询
results = restaurants.find({ "cuisine" : "Italian"}, limit=5, sort={"name": pymongo.ASCENDING}, skip=10) for restaurant in results: print(restaurant["name"])
Acqua Acqua Restaurant Acqua Santa Acquista Trattoria Acquolina Catering
更多信息
有关指定查询的更多信息,请参阅指定查询。
有关检索文档的更多信息,请参阅检索数据。
API 文档
要了解更多关于本指南中讨论的任何方法或类型的信息,请参阅以下API文档