Python MongoDB - Hướng dẫn nhanh
Pymongo là một bản phân phối python cung cấp các công cụ để làm việc với MongoDB, đây là cách được ưu tiên nhất để giao tiếp với cơ sở dữ liệu MongoDB từ python.
Cài đặt
Để cài đặt pymongo, trước hết hãy đảm bảo rằng bạn đã cài đặt python3 (cùng với PIP) và MongoDB đúng cách. Sau đó thực hiện lệnh sau.
C:\WINDOWS\system32>pip install pymongo
Collecting pymongo
Using cached https://files.pythonhosted.org/packages/cb/a6/b0ae3781b0ad75825e00e29dc5489b53512625e02328d73556e1ecdf12f8/pymongo-3.9.0-cp37-cp37m-win32.whl
Installing collected packages: pymongo
Successfully installed pymongo-3.9.0
xác minh
Khi bạn đã cài đặt xong pymongo, hãy mở một tài liệu văn bản mới, dán dòng sau vào đó và lưu nó dưới dạng test.py.
import pymongo
Nếu bạn đã cài đặt pymongo đúng cách, nếu bạn thực thi test.py như hình dưới đây, bạn sẽ không gặp bất kỳ sự cố nào.
D:\Python_MongoDB>test.py
D:\Python_MongoDB>
Không giống như các cơ sở dữ liệu khác, MongoDB không cung cấp lệnh riêng biệt để tạo cơ sở dữ liệu.
Nói chung, lệnh sử dụng được sử dụng để chọn / chuyển sang cơ sở dữ liệu cụ thể. Lệnh này ban đầu xác minh xem cơ sở dữ liệu chúng tôi chỉ định có tồn tại hay không, nếu có, nó sẽ kết nối với nó. Nếu cơ sở dữ liệu, chúng tôi chỉ định bằng lệnh sử dụng không tồn tại, một cơ sở dữ liệu mới sẽ được tạo.
Do đó, bạn có thể tạo cơ sở dữ liệu trong MongoDB bằng cách sử dụng Use chỉ huy.
Cú pháp
Cú pháp cơ bản của use DATABASE tuyên bố như sau:
use DATABASE_NAME
Thí dụ
Lệnh sau tạo một cơ sở dữ liệu có tên trong mydb.
>use mydb
switched to db mydb
Bạn có thể xác minh sáng tạo của mình bằng cách sử dụng lệnh db , lệnh này sẽ hiển thị cơ sở dữ liệu hiện tại.
>db
mydb
Tạo cơ sở dữ liệu bằng Python
Để kết nối với MongoDB bằng pymongo, bạn cần nhập và tạo MongoClient, sau đó bạn có thể truy cập trực tiếp vào cơ sở dữ liệu bạn cần tạo trong thuộc tính đam mê.
Thí dụ
Ví dụ sau tạo cơ sở dữ liệu trong MangoDB.
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['mydb']
print("Database created........")
#Verification
print("List of databases after creating new one")
print(client.list_database_names())
Đầu ra
Database created........
List of databases after creating new one:
['admin', 'config', 'local', 'mydb']
Bạn cũng có thể chỉ định cổng và tên máy chủ trong khi tạo MongoClient và có thể truy cập cơ sở dữ liệu theo kiểu từ điển.
Thí dụ
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['mydb']
print("Database created........")
Đầu ra
Database created........
Một bộ sưu tập trong MongoDB chứa một bộ tài liệu, nó tương tự như một bảng trong cơ sở dữ liệu quan hệ.
Bạn có thể tạo một bộ sưu tập bằng cách sử dụng createCollection()phương pháp. Phương thức này chấp nhận một giá trị Chuỗi đại diện cho tên của tập hợp sẽ được tạo và một tham số tùy chọn (tùy chọn).
Sử dụng điều này, bạn có thể chỉ định những điều sau:
Các kích thước của bộ sưu tập.
Các max số tài liệu cho phép trong bộ sưu tập mũ.
Liệu bộ sưu tập chúng tôi tạo có phải là bộ sưu tập giới hạn (bộ sưu tập có kích thước cố định) hay không.
Liệu bộ sưu tập chúng tôi tạo có được tự động lập chỉ mục hay không.
Cú pháp
Sau đây là cú pháp để tạo một bộ sưu tập trong MongoDB.
db.createCollection("CollectionName")
Thí dụ
Phương thức sau tạo một bộ sưu tập có tên là ExampleCollection.
> use mydb
switched to db mydb
> db.createCollection("ExampleCollection")
{ "ok" : 1 }
>
Tương tự, sau đây là một truy vấn tạo một bộ sưu tập bằng cách sử dụng các tùy chọn của phương thức createCollection ().
>db.createCollection("mycol", { capped : true, autoIndexId : true, size :
6142800, max : 10000 } )
{ "ok" : 1 }
>
Tạo Bộ sưu tập bằng Python
Ví dụ python sau kết nối với cơ sở dữ liệu trong MongoDB (mydb) và tạo một bộ sưu tập trong đó.
Thí dụ
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['mydb']
#Creating a collection
collection = db['example']
print("Collection created........")
Đầu ra
Collection created........
Bạn có thể lưu trữ tài liệu vào MongoDB bằng phương thức insert () . Phương thức này chấp nhận một tài liệu JSON làm tham số.
Cú pháp
Sau đây là cú pháp của phương thức chèn.
>db.COLLECTION_NAME.insert(DOCUMENT_NAME)
Thí dụ
> use mydb
switched to db mydb
> db.createCollection("sample")
{ "ok" : 1 }
> doc1 = {"name": "Ram", "age": "26", "city": "Hyderabad"}
{ "name" : "Ram", "age" : "26", "city" : "Hyderabad" }
> db.sample.insert(doc1)
WriteResult({ "nInserted" : 1 })
>
Tương tự, bạn cũng có thể chèn nhiều tài liệu bằng cách sử dụng insert() phương pháp.
> use testDB
switched to db testDB
> db.createCollection("sample")
{ "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" : "1001", "name" : "Ram", "age" : "26", "city" : "Hyderabad"},
{"_id" : "1002", "name" : "Rahim", "age" : 27, "city" : "Bangalore"},
{"_id" : "1003", "name" : "Robert", "age" : 28, "city" : "Mumbai"}
]
> db.sample.insert(data)
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 3,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
>
Tạo Bộ sưu tập bằng Python
Pymongo cung cấp một phương thức có tên insert_one () để chèn một tài liệu vào MangoDB. Đối với phương pháp này, chúng ta cần chuyển tài liệu ở định dạng từ điển.
Thí dụ
Ví dụ sau sẽ chèn một tài liệu trong ví dụ có tên bộ sưu tập.
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['mydb']
#Creating a collection
coll = db['example']
#Inserting document into a collection
doc1 = {"name": "Ram", "age": "26", "city": "Hyderabad"}
coll.insert_one(doc1)
print(coll.find_one())
Đầu ra
{'_id': ObjectId('5d63ad6ce043e2a93885858b'), 'name': 'Ram', 'age': '26', 'city': 'Hyderabad'}
Để chèn nhiều tài liệu vào MongoDB bằng pymongo, bạn cần gọi phương thức insert_many ().
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['mydb']
#Creating a collection
coll = db['example']
#Inserting document into a collection
data = [
{"_id": "101", "name": "Ram", "age": "26", "city": "Hyderabad"},
{"_id": "102", "name": "Rahim", "age": "27", "city": "Bangalore"},
{"_id": "103", "name": "Robert", "age": "28", "city": "Mumbai"}
]
res = coll.insert_many(data)
print("Data inserted ......")
print(res.inserted_ids)
Đầu ra
Data inserted ......
['101', '102', '103']
Bạn có thể đọc / truy xuất các tài liệu đã lưu trữ từ MongoDB bằng cách sử dụng find()phương pháp. Phương thức này truy xuất và hiển thị tất cả các tài liệu trong MongoDB theo cách không có cấu trúc.
Cú pháp
Sau đây là cú pháp của find() phương pháp.
>db.COLLECTION_NAME.find()
Thí dụ
Giả sử chúng ta đã chèn 3 tài liệu vào cơ sở dữ liệu có tên testDB trong một bộ sưu tập có tên mẫu bằng cách sử dụng các truy vấn sau:
> use testDB
> db.createCollection("sample")
> 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" }
]
> db.sample.insert(data)
Bạn có thể truy xuất các tài liệu đã chèn bằng phương thức find () như sau:
> use testDB
switched to db testDB
> db.sample.find()
{ "_id" : "1001", "name" : "Ram", "age" : "26", "city" : "Hyderabad" }
{ "_id" : "1002", "name" : "Rahim", "age" : 27, "city" : "Bangalore" }
{ "_id" : "1003", "name" : "Robert", "age" : 28, "city" : "Mumbai" }
>
Bạn cũng có thể truy xuất tài liệu đầu tiên trong bộ sưu tập bằng phương thức findOne () như sau:
> db.sample.findOne()
{ "_id" : "1001", "name" : "Ram", "age" : "26", "city" : "Hyderabad" }
Truy xuất dữ liệu (tìm) bằng Python
Các find_One() phương thức pymongo được sử dụng để truy xuất một tài liệu dựa trên truy vấn của bạn, trong trường hợp không khớp, phương thức này sẽ không trả về kết quả nào và nếu bạn không sử dụng bất kỳ truy vấn nào, nó sẽ trả về tài liệu đầu tiên của bộ sưu tập.
Phương pháp này hữu ích bất cứ khi nào bạn chỉ cần truy xuất một tài liệu của một kết quả hoặc nếu bạn chắc chắn rằng truy vấn của mình chỉ trả về một tài liệu.
Thí dụ
Sau ví dụ python truy xuất tài liệu đầu tiên của một bộ sưu tập -
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['mydatabase']
#Creating a collection
coll = db['example']
#Inserting document into a collection
data = [
{"_id": "101", "name": "Ram", "age": "26", "city": "Hyderabad"},
{"_id": "102", "name": "Rahim", "age": "27", "city": "Bangalore"},
{"_id": "103", "name": "Robert", "age": "28", "city": "Mumbai"}
]
res = coll.insert_many(data)
print("Data inserted ......")
print(res.inserted_ids)
#Retrieving the first record using the find_one() method
print("First record of the collection: ")
print(coll.find_one())
#Retrieving a record with is 103 using the find_one() method
print("Record whose id is 103: ")
print(coll.find_one({"_id": "103"}))
Đầu ra
Data inserted ......
['101', '102', '103']
First record of the collection:
{'_id': '101', 'name': 'Ram', 'age': '26', 'city': 'Hyderabad'}
Record whose id is 103:
{'_id': '103', 'name': 'Robert', 'age': '28', 'city': 'Mumbai'}
Để nhận nhiều tài liệu trong một truy vấn (phương pháp tìm od gọi duy nhất), bạn có thể sử dụng find()phương pháp pymongo. Nếu chưa vượt qua bất kỳ truy vấn nào, nó sẽ trả về tất cả các tài liệu của một bộ sưu tập và nếu bạn đã chuyển một truy vấn cho phương thức này, nó sẽ trả về tất cả các tài liệu phù hợp.
Thí dụ
#Getting the database instance
db = client['myDB']
#Creating a collection
coll = db['example']
#Inserting document into a collection
data = [
{"_id": "101", "name": "Ram", "age": "26", "city": "Hyderabad"},
{"_id": "102", "name": "Rahim", "age": "27", "city": "Bangalore"},
{"_id": "103", "name": "Robert", "age": "28", "city": "Mumbai"}
]
res = coll.insert_many(data)
print("Data inserted ......")
#Retrieving all the records using the find() method
print("Records of the collection: ")
for doc1 in coll.find():
print(doc1)
#Retrieving records with age greater than 26 using the find() method
print("Record whose age is more than 26: ")
for doc2 in coll.find({"age":{"$gt":"26"}}):
print(doc2)
Đầu ra
Data inserted ......
Records of the collection:
{'_id': '101', 'name': 'Ram', 'age': '26', 'city': 'Hyderabad'}
{'_id': '102', 'name': 'Rahim', 'age': '27', 'city': 'Bangalore'}
{'_id': '103', 'name': 'Robert', 'age': '28', 'city': 'Mumbai'}
Record whose age is more than 26:
{'_id': '102', 'name': 'Rahim', 'age': '27', 'city': 'Bangalore'}
{'_id': '103', 'name': 'Robert', 'age': '28', 'city': 'Mumbai'}
Trong khi truy xuất bằng cách sử dụng find(), bạn có thể lọc các tài liệu bằng cách sử dụng đối tượng truy vấn. Bạn có thể chuyển truy vấn chỉ định điều kiện cho các tài liệu bắt buộc làm tham số cho phương thức này.
Người điều hành
Sau đây là danh sách các toán tử được sử dụng trong các truy vấn trong MongoDB.
Hoạt động | Cú pháp | Thí dụ |
---|---|---|
Bình đẳng | {"giá trị cốt lõi"} | db.mycol.find ({"theo": "điểm hướng dẫn"}) |
Ít hơn | {"key": {$ lt: "value"}} | db.mycol.find ({"lượt thích": {$ lt: 50}}) |
Nhỏ hơn bằng | {"key": {$ lte: "value"}} | db.mycol.find ({"likes": {$ lte: 50}}) |
Lớn hơn | {"key": {$ gt: "value"}} | db.mycol.find ({"lượt thích": {$ gt: 50}}) |
Lớn hơn bằng | {"key" {$ gte: "value"}} | db.mycol.find ({"thích": {$ gte: 50}}) |
Không bằng | {"key": {$ ne: "value"}} | db.mycol.find ({"thích": {$ ne: 50}}) |
Ví dụ 1
Ví dụ sau lấy tài liệu trong một tập hợp có tên là sarmista.
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['sdsegf']
#Creating a collection
coll = db['example']
#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 data
print("Documents in the collection: ")
for doc1 in coll.find({"name":"Sarmista"}):
print(doc1)
Đầu ra
Data inserted ......
Documents in the collection:
{'_id': '1005', 'name': 'Sarmista', 'age': '23', 'city': 'Delhi'}
Ví dụ2
Ví dụ sau lấy tài liệu trong một bộ sưu tập có giá trị tuổi lớn hơn 26.
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['ghhj']
#Creating a collection
coll = db['example']
#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 data
print("Documents in the collection: ")
for doc in coll.find({"age":{"$gt":"26"}}):
print(doc)
Đầu ra
Data inserted ......
Documents in the collection:
{'_id': '1002', 'name': 'Rahim', 'age': '27', 'city': 'Bangalore'}
{'_id': '1003', 'name': 'Robert', 'age': '28', 'city': 'Mumbai'}
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'}
Bạn có thể xóa tài liệu trong bộ sưu tập bằng cách sử dụng remove()phương thức của MongoDB. Phương thức này chấp nhận hai tham số tùy chọn -
Tiêu chí xóa xác định điều kiện để xóa tài liệu.
Chỉ một, nếu bạn chuyển true hoặc 1 làm tham số thứ hai, thì chỉ một tài liệu sẽ bị xóa.
Cú pháp
Sau đây là cú pháp của phương thức remove ():
>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)
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" : [ ]
})
Truy vấn sau sẽ xóa (các) tài liệu của bộ sưu tập có giá trị tên là Sarmista.
> db.sample.remove({"name": "Sarmista"})
WriteResult({ "nRemoved" : 1 })
> db.sample.find()
{ "_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" : "1006", "name" : "Rasajna", "age" : 26, "city" : "Chennai" }
Nếu bạn gọi remove() mà không vượt qua tiêu chí xóa, tất cả các tài liệu trong bộ sưu tập sẽ bị xóa.
> db.sample.remove({})
WriteResult({ "nRemoved" : 5 })
> db.sample.find()
Xóa tài liệu bằng Python
Để xóa tài liệu khỏi bộ sưu tập MangoDB, bạn có thể xóa tài liệu khỏi bộ sưu tập bằng các phương pháp delete_one() và delete_many() các phương pháp.
Các phương thức này chấp nhận một đối tượng truy vấn xác định điều kiện để xóa tài liệu.
Phương thức detele_one () xóa một tài liệu duy nhất, trong trường hợp trùng khớp. Nếu không có truy vấn nào được chỉ định, phương pháp này sẽ xóa tài liệu đầu tiên trong bộ sưu tập.
Thí dụ
Ví dụ python sau sẽ xóa tài liệu trong bộ sưu tập có giá trị id là 1006.
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['lpaksgf']
#Creating a collection
coll = db['example']
#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 ......")
#Deleting one document
coll.delete_one({"_id" : "1006"})
#Retrieving all the records using the find() method
print("Documents in the collection after update operation: ")
for doc2 in coll.find():
print(doc2)
Đầu ra
Data inserted ......
Documents in the collection after update operation:
{'_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'}
Tương tự, delete_many() Phương pháp pymongo xóa tất cả các tài liệu thỏa mãn điều kiện đã chỉ định.
Thí dụ
Ví dụ sau sẽ xóa tất cả các tài liệu trong bộ sưu tập có giá trị tuổi lớn hơn 26 -
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['sampleDB']
#Creating a collection
coll = db['example']
#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 ......")
#Deleting multiple documents
coll.delete_many({"age":{"$gt":"26"}})
#Retrieving all the records using the find() method
print("Documents in the collection after update operation: ")
for doc2 in coll.find():
print(doc2)
Đầu ra
Data inserted ......
Documents in the collection after update operation:
{'_id': '1001', 'name': 'Ram', 'age': '26', 'city': 'Hyderabad'}
{'_id': '1004', 'name': 'Romeo', 'age': '25', 'city': 'Pune'}
{'_id': '1005', 'name': 'Sarmista', 'age': '23', 'city': 'Delhi'}
{'_id': '1006', 'name': 'Rasajna', 'age': '26', 'city': 'Chennai'}
Nếu bạn gọi phương thức delete_many () mà không chuyển bất kỳ truy vấn nào, phương thức này sẽ xóa tất cả các tài liệu trong bộ sưu tập.
coll.delete_many({})
Bạn có thể xóa bộ sưu tập bằng cách sử dụng drop() phương thức của MongoDB.
Cú pháp
Sau đây là cú pháp của phương thức drop ():
db.COLLECTION_NAME.drop()
Thí dụ
Ví dụ sau bộ sưu tập giọt với tên mẫu -
> show collections
myColl
sample
> db.sample.drop()
true
> show collections
myColl
Bỏ bộ sưu tập bằng Python
Bạn có thể xóa / xóa một bộ sưu tập hiện tại bằng cách gọi phương thức drop ().
Thí dụ
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['example2']
#Creating a collection
col1 = db['collection']
col1.insert_one({"name": "Ram", "age": "26", "city": "Hyderabad"})
col2 = db['coll']
col2.insert_one({"name": "Rahim", "age": "27", "city": "Bangalore"})
col3 = db['myColl']
col3.insert_one({"name": "Robert", "age": "28", "city": "Mumbai"})
col4 = db['data']
col4.insert_one({"name": "Romeo", "age": "25", "city": "Pune"})
#List of collections
print("List of collections:")
collections = db.list_collection_names()
for coll in collections:
print(coll)
#Dropping a collection
col1.drop()
col4.drop()
print("List of collections after dropping two of them: ")
#List of collections
collections = db.list_collection_names()
for coll in collections:
print(coll)
Đầu ra
List of collections:
coll
data
collection
myColl
List of collections after dropping two of them:
coll
myColl
Bạn có thể cập nhật nội dung của tài liệu hiện có bằng cách sử dụng update() phương pháp hoặc save() phương pháp.
Phương thức cập nhật sửa đổi tài liệu hiện có trong khi phương thức lưu thay thế tài liệu hiện có bằng tài liệu mới.
Cú pháp
Sau đây là cú pháp của phương thức update () và save () của MangoDB:
>db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)
Or,
db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
Thí dụ
Giả sử chúng ta đã tạo một bộ sưu tập trong cơ sở dữ liệu và chèn 3 bản ghi vào đó như hình dưới đây -
> use testdatabase
switched to db testdatabase
> 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" : "1001", "name" : "Ram", "age" : "26", "city" : "Hyderabad"},
{"_id" : "1002", "name" : "Rahim", "age" : 27, "city" : "Bangalore"},
{"_id" : "1003", "name" : "Robert", "age" : 28, "city" : "Mumbai"}
]
> db.createCollection("sample")
{ "ok" : 1 }
> db.sample.insert(data)
Phương pháp sau cập nhật giá trị thành phố của tài liệu với id 1002.
>db.sample.update({"_id":"1002"},{"$set":{"city":"Visakhapatnam"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.sample.find()
{ "_id" : "1001", "name" : "Ram", "age" : "26", "city" : "Hyderabad" }
{ "_id" : "1002", "name" : "Rahim", "age" : 27, "city" : "Visakhapatnam" }
{ "_id" : "1003", "name" : "Robert", "age" : 28, "city" : "Mumbai" }
Tương tự, bạn có thể thay thế tài liệu bằng dữ liệu mới bằng cách lưu nó với cùng một id bằng phương thức save ().
> db.sample.save({ "_id" : "1001", "name" : "Ram", "age" : "26", "city" : "Vijayawada" })
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.sample.find()
{ "_id" : "1001", "name" : "Ram", "age" : "26", "city" : "Vijayawada" }
{ "_id" : "1002", "name" : "Rahim", "age" : 27, "city" : "Visakhapatnam" }
{ "_id" : "1003", "name" : "Robert", "age" : 28, "city" : "Mumbai" }
Cập nhật tài liệu bằng python
Tương tự như phương thức find_one () truy xuất một tài liệu, phương thức update_one () của pymongo cập nhật một tài liệu duy nhất.
Phương thức này chấp nhận một truy vấn chỉ định tài liệu nào cần cập nhật và thao tác cập nhật.
Thí dụ
Ví dụ về python sau cập nhật giá trị vị trí của tài liệu trong bộ sưu tập.
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['myDB']
#Creating a collection
coll = db['example']
#Inserting document into a collection
data = [
{"_id": "101", "name": "Ram", "age": "26", "city": "Hyderabad"},
{"_id": "102", "name": "Rahim", "age": "27", "city": "Bangalore"},
{"_id": "103", "name": "Robert", "age": "28", "city": "Mumbai"}
]
res = coll.insert_many(data)
print("Data inserted ......")
#Retrieving all the records using the find() method
print("Documents in the collection: ")
for doc1 in coll.find():
print(doc1)
coll.update_one({"_id":"102"},{"$set":{"city":"Visakhapatnam"}})
#Retrieving all the records using the find() method
print("Documents in the collection after update operation: ")
for doc2 in coll.find():
print(doc2)
Đầu ra
Data inserted ......
Documents in the collection:
{'_id': '101', 'name': 'Ram', 'age': '26', 'city': 'Hyderabad'}
{'_id': '102', 'name': 'Rahim', 'age': '27', 'city': 'Bangalore'}
{'_id': '103', 'name': 'Robert', 'age': '28', 'city': 'Mumbai'}
Documents in the collection after update operation:
{'_id': '101', 'name': 'Ram', 'age': '26', 'city': 'Hyderabad'}
{'_id': '102', 'name': 'Rahim', 'age': '27', 'city': 'Visakhapatnam'}
{'_id': '103', 'name': 'Robert', 'age': '28', 'city': 'Mumbai'}
Tương tự, update_many() method of pymongo cập nhật tất cả các tài liệu thỏa mãn điều kiện quy định.
Thí dụ
Ví dụ sau cập nhật giá trị vị trí trong tất cả các tài liệu trong một bộ sưu tập (điều kiện trống) -
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['myDB']
#Creating a collection
coll = db['example']
#Inserting document into a collection
data = [
{"_id": "101", "name": "Ram", "age": "26", "city": "Hyderabad"},
{"_id": "102", "name": "Rahim", "age": "27", "city": "Bangalore"},
{"_id": "103", "name": "Robert", "age": "28", "city": "Mumbai"}
]
res = coll.insert_many(data)
print("Data inserted ......")
#Retrieving all the records using the find() method
print("Documents in the collection: ")
for doc1 in coll.find():
print(doc1)
coll.update_many({},{"$set":{"city":"Visakhapatnam"}})
#Retrieving all the records using the find() method
print("Documents in the collection after update operation: ")
for doc2 in coll.find():
print(doc2)
Đầu ra
Data inserted ......
Documents in the collection:
{'_id': '101', 'name': 'Ram', 'age': '26', 'city': 'Hyderabad'}
{'_id': '102', 'name': 'Rahim', 'age': '27', 'city': 'Bangalore'}
{'_id': '103', 'name': 'Robert', 'age': '28', 'city': 'Mumbai'}
Documents in the collection after update operation:
{'_id': '101', 'name': 'Ram', 'age': '26', 'city': 'Visakhapatnam'}
{'_id': '102', 'name': 'Rahim', 'age': '27', 'city': 'Visakhapatnam'}
{'_id': '103', 'name': 'Robert', 'age': '28', 'city': 'Visakhapatnam'}
Trong khi truy xuất nội dung của một tập hợp, bạn có thể giới hạn số lượng tài liệu trong kết quả bằng cách sử dụng phương thức giới hạn (). Phương thức này chấp nhận một giá trị số đại diện cho số lượng tài liệu bạn muốn trong kết quả.
Cú pháp
Sau đây là cú pháp của phương thức limit ():
>db.COLLECTION_NAME.find().limit(NUMBER)
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("sample")
{ "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 3 tài liệu đầu tiên của bộ sưu tập.
> db.sample.find().limit(3)
{ "_id" : "1001", "name" : "Ram", "age" : "26", "city" : "Hyderabad" }
{ "_id" : "1002", "name" : "Rahim", "age" : 27, "city" : "Bangalore" }
{ "_id" : "1003", "name" : "Robert", "age" : 28, "city" : "Mumbai" }
Giới hạn tài liệu bằng Python
Để hạn chế kết quả của một truy vấn đối với một số tài liệu cụ thể, pymongo cung cấp limit()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ả.
Thí dụ
Ví dụ sau lấy ba tài liệu đầu tiên trong một bộ sưu tập.
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['l']
#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("First 3 documents in the collection: ")
for doc1 in coll.find().limit(3):
print(doc1)
Đầu ra
Data inserted ......
First 3 documents in the collection:
{'_id': '1001', 'name': 'Ram', 'age': '26', 'city': 'Hyderabad'}
{'_id': '1002', 'name': 'Rahim', 'age': '27', 'city': 'Bangalore'}
{'_id': '1003', 'name': 'Robert', 'age': '28', 'city': 'Mumbai'}