Docs 菜单
Docs 主页
/ / /
pymongo
/

指定要返回的文档

在此页面上

  • Overview
  • 样本数据
  • Limit
  • Sort
  • 跳过
  • 组合限制、排序和跳过
  • 更多信息
  • API 文档

在本指南中,您可以学习;了解如何使用以下方法指定从读取操作中返回哪些文档:

  • limit():指定从查询中返回的最大文档数。

  • sort():指定返回文档的排序顺序。

  • skip():指定在返回查询结果之前要跳过的文档数。

本指南中的示例使用 Atlas示例数据集中sample_restaurants.restaurants集合。 要学习;了解如何创建免费的MongoDB Atlas 群集并加载示例数据集,请参阅 PyMongo入门 。

要指定读取操作返回的最大文档数,请调用limit()方法。

以下示例查找cuisine字段值为"Italian"的所有餐馆,并将结果限制为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()方法。 sort()方法接受两个参数:对结果进行排序的字段和排序方向。 要指定排序方向,请指定pymongo.ASCENDINGpymongo.DESCENDINGASCENDING将值从最低到最高排序, 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参数跳过返回的文档。 以下示例指定了与前面的示例相同的 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 文档:

后退

指定要返回的字段