当我们想要按照某列(字段)对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文档的升序或降序排序,并可搭配多字段排序以满足更复杂的排序需求。