Python中对MongoDB查询结果排序的教程

当我们想要按照某列(字段)对MongoDB中的文档进行排序时,可使用PyMongo提供的sort()方法。下面介绍如何在Python中对查询结果进行升序或降序排列。

1. 默认升序排序

如果希望根据某个字段(如name)按字母顺序进行升序排序,只需在find()后调用sort("字段名")

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

mydoc = mycol.find().sort("name")  # 按 name 升序

for doc in mydoc:
    print(doc)

如果不指定第二个参数,则默认就是升序。

2. 降序排序

若想逆序输出,只需在sort的第二个参数传-1,表示降序:

mydoc = mycol.find().sort("name", -1)  # 按 name 降序

for doc in mydoc:
    print(doc)

这样就按name字段从Z到A的顺序列出文档。

3. 同时对多个字段排序

如果想对多个字段进行排序,比如先按age升序,再按name降序,可传入一个列表:

mydoc = mycol.find().sort([("age", 1), ("name", -1)])

排序优先级从左到右,先对age升序,再对name降序。

提示

  • sort("field", 1) => 升序
  • sort("field", -1) => 降序
  • 多字段排序可在sort传列表,指定(字段, 方向)对。

通过以上示例,你便可轻松实现MongoDB文档的升序或降序排序,并可搭配多字段排序以满足更复杂的排序需求。