Python MongoDB Tìm
Trong MongoDB, chúng tôi sử dụng các phương thức find()
và find_one()
để tìm dữ liệu trong bộ sưu tập.
Giống như câu lệnh SELECT được sử dụng để tìm dữ liệu trong bảng trong cơ sở dữ liệu MySQL.
Tìm một
Để chọn dữ liệu từ bộ sưu tập trong MongoDB, chúng ta có thể sử dụng phương thức find_one()
.
Phương thức find_one()
trả về lần xuất hiện đầu tiên trong vùng chọn.
Ví dụ
Tìm tài liệu đầu tiên trong bộ sưu tập khách hàng:
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
x = mycol.find_one()
print(x)
Chạy ví dụ »Tìm tất cả
Để chọn dữ liệu từ một bảng trong MongoDB, chúng ta cũng có thể sử dụng phương thức find()
.
Phương thức find()
trả về tất cả các lần xuất hiện trong vùng chọn.
Tham số đầu tiên của phương thức find()
là một đối tượng truy vấn. Trong ví dụ này, chúng tôi sử dụng một đối tượng truy vấn trống để chọn tất cả tài liệu trong bộ sưu tập.
Không có tham số nào trong phương thức find() cho bạn kết quả tương tự như SELECT * trong MySQL.
Ví dụ
Trả lại tất cả tài liệu trong bộ sưu tập "khách hàng" và in từng tài liệu:
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
for x in mycol.find():
print(x)
Chạy ví dụ » Chỉ trả về một số trường
Tham số thứ hai của phương thức find()
là một đối tượng mô tả những trường nào sẽ được đưa vào kết quả.
Tham số này là tùy chọn và nếu bị bỏ qua, tất cả các trường sẽ được đưa vào kết quả.
Ví dụ
Chỉ trả về tên và địa chỉ, không trả về _id:
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
for x in mycol.find({},{ "_id": 0, "name": 1, "address": 1 }):
print(x)
Chạy ví dụ »Bạn không được phép chỉ định cả hai giá trị 0 và 1 trong cùng một đối tượng (trừ khi một trong các trường là trường _id). Nếu bạn chỉ định một trường có giá trị 0 thì tất cả các trường khác sẽ nhận giá trị 1 và ngược lại:
Ví dụ
Ví dụ này sẽ loại trừ "địa chỉ" khỏi kết quả:
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
for x in mycol.find({},{ "address": 0 }):
print(x)
Chạy ví dụ »Ví dụ
Bạn sẽ gặp lỗi nếu chỉ định cả hai giá trị 0 và 1 trong cùng một đối tượng (trừ khi một trong các trường là trường _id):
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]
for x in mycol.find({},{ "name": 1, "address": 0 }):
print(x)