Python MongoDB - Sắp xếp
Trong khi truy xuất nội dung của một bộ sưu tập, bạn có thể sắp xếp và sắp xếp chúng theo thứ tự tăng dần hoặc giảm dần bằng cách sử dụng sort() phương pháp.
Đối với phương pháp này, bạn có thể chuyển (các) trường và thứ tự sắp xếp là 1 hoặc -1. Trong đó, 1 là thứ tự tăng dần và -1 là thứ tự giảm dần.
Cú pháp
Sau đây là cú pháp của phương thức sort () .
>db.COLLECTION_NAME.find().sort({KEY:1})
Thí dụ
Giả sử chúng tôi đã tạo một bộ sưu tập và chèn 5 tài liệu vào nó như hình dưới đây -
> use testDB
switched to db testDB
> db.createCollection("myColl")
{ "ok" : 1 }
> data = [
... {"_id": "1001", "name": "Ram", "age": "26", "city": "Hyderabad"},
... {"_id": "1002", "name": "Rahim", "age": 27, "city": "Bangalore"},
... {"_id": "1003", "name": "Robert", "age": 28, "city": "Mumbai"},
... {"_id": "1004", "name": "Romeo", "age": 25, "city": "Pune"},
... {"_id": "1005", "name": "Sarmista", "age": 23, "city": "Delhi"},
... {"_id": "1006", "name": "Rasajna", "age": 26, "city": "Chennai"}
]
> db.sample.insert(data)
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 6,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
Dòng sau lấy tất cả các tài liệu của bộ sưu tập được sắp xếp theo thứ tự tăng dần dựa trên độ tuổi.
> db.sample.find().sort({age:1})
{ "_id" : "1005", "name" : "Sarmista", "age" : 23, "city" : "Delhi" }
{ "_id" : "1004", "name" : "Romeo", "age" : 25, "city" : "Pune" }
{ "_id" : "1006", "name" : "Rasajna", "age" : 26, "city" : "Chennai" }
{ "_id" : "1002", "name" : "Rahim", "age" : 27, "city" : "Bangalore" }
{ "_id" : "1003", "name" : "Robert", "age" : 28, "city" : "Mumbai" }
{ "_id" : "1001", "name" : "Ram", "age" : "26", "city" : "Hyderabad" }
Sắp xếp tài liệu bằng python
Để sắp xếp kết quả của một truy vấn theo thứ tự tăng dần hoặc giảm dần, pymongo cung cấp sort()phương pháp. Đối với phương pháp này, hãy chuyển một giá trị số đại diện cho số lượng tài liệu bạn cần trong kết quả.
Theo mặc định, phương pháp này sắp xếp các tài liệu theo thứ tự tăng dần dựa trên trường được chỉ định. Nếu bạn cần sắp xếp theo thứ tự giảm dần, hãy chuyển -1 cùng với tên trường -
coll.find().sort("age",-1)
Thí dụ
Ví dụ sau lấy tất cả các tài liệu của một tập hợp được sắp xếp theo các giá trị tuổi theo thứ tự tăng dần -
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['b_mydb']
#Creating a collection
coll = db['myColl']
#Inserting document into a collection
data = [
{"_id": "1001", "name": "Ram", "age": "26", "city": "Hyderabad"},
{"_id": "1002", "name": "Rahim", "age": "27", "city": "Bangalore"},
{"_id": "1003", "name": "Robert", "age": "28", "city": "Mumbai"},
{"_id": "1004", "name": "Romeo", "age": 25, "city": "Pune"},
{"_id": "1005", "name": "Sarmista", "age": 23, "city": "Delhi"},
{"_id": "1006", "name": "Rasajna", "age": 26, "city": "Chennai"}
]
res = coll.insert_many(data)
print("Data inserted ......")
#Retrieving first 3 documents using the find() and limit() methods
print("List of documents (sorted in ascending order based on age): ")
for doc1 in coll.find().sort("age"):
print(doc1)
Đầu ra
Data inserted ......
List of documents (sorted in ascending order based on age):
{'_id': '1005', 'name': 'Sarmista', 'age': 23, 'city': 'Delhi'}
{'_id': '1004', 'name': 'Romeo', 'age': 25, 'city': 'Pune'}
{'_id': '1006', 'name': 'Rasajna', 'age': 26, 'city': 'Chennai'}
{'_id': '1001', 'name': 'Ram', 'age': '26', 'city': 'Hyderabad'}
{'_id': '1002', 'name': 'Rahim', 'age': '27', 'city': 'Bangalore'}
{'_id': '1003', 'name': 'Robert', 'age': '28', 'city': 'Mumbai'}