Python MongoDB - คู่มือฉบับย่อ
Pymongo เป็นการกระจาย python ซึ่งมีเครื่องมือในการทำงานกับ MongoDB ซึ่งเป็นวิธีที่ต้องการมากที่สุดในการสื่อสารกับฐานข้อมูล MongoDB จาก python
การติดตั้ง
ในการติดตั้ง pymongo ก่อนอื่นตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง python3 (พร้อมกับ PIP) และ MongoDB อย่างถูกต้อง จากนั้นดำเนินการคำสั่งต่อไปนี้
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
การยืนยัน
เมื่อคุณติดตั้ง pymongo แล้วให้เปิดเอกสารข้อความใหม่วางบรรทัดต่อไปนี้ลงในนั้นแล้วบันทึกเป็น test.py
import pymongo
หากคุณติดตั้ง pymongo อย่างถูกต้องหากคุณดำเนินการ test.py ตามที่แสดงด้านล่างคุณจะไม่พบปัญหาใด ๆ
D:\Python_MongoDB>test.py
D:\Python_MongoDB>
ซึ่งแตกต่างจากฐานข้อมูลอื่น ๆ MongoDB ไม่มีคำสั่งแยกต่างหากเพื่อสร้างฐานข้อมูล
โดยทั่วไปคำสั่ง use ใช้เพื่อเลือก / สลับไปยังฐานข้อมูลเฉพาะ คำสั่งนี้ในขั้นต้นจะตรวจสอบว่าฐานข้อมูลที่เราระบุมีอยู่หรือไม่หากมีการเชื่อมต่อกับฐานข้อมูลนั้น ถ้าฐานข้อมูลที่เราระบุด้วยคำสั่ง use ไม่มีฐานข้อมูลใหม่จะถูกสร้างขึ้น
ดังนั้นคุณสามารถสร้างฐานข้อมูลใน MongoDB โดยใช้ไฟล์ Use คำสั่ง
ไวยากรณ์
ไวยากรณ์พื้นฐานของ use DATABASE คำสั่งมีดังนี้ -
use DATABASE_NAME
ตัวอย่าง
คำสั่งต่อไปนี้สร้างฐานข้อมูลชื่อใน mydb
>use mydb
switched to db mydb
คุณสามารถตรวจสอบการสร้างของคุณโดยใช้คำสั่งdbซึ่งจะแสดงฐานข้อมูลปัจจุบัน
>db
mydb
การสร้างฐานข้อมูลโดยใช้ Python
ในการเชื่อมต่อกับ MongoDB โดยใช้ pymongo คุณต้องนำเข้าและสร้าง MongoClient จากนั้นคุณจึงสามารถเข้าถึงฐานข้อมูลที่คุณต้องการสร้างได้โดยตรงจากความหลงใหลในแอตทริบิวต์
ตัวอย่าง
ตัวอย่างต่อไปนี้สร้างฐานข้อมูลใน 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())
เอาต์พุต
Database created........
List of databases after creating new one:
['admin', 'config', 'local', 'mydb']
คุณยังสามารถระบุพอร์ตและชื่อโฮสต์ขณะสร้าง MongoClient และสามารถเข้าถึงฐานข้อมูลในรูปแบบพจนานุกรม
ตัวอย่าง
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['mydb']
print("Database created........")
เอาต์พุต
Database created........
คอลเลกชันใน MongoDB มีชุดเอกสารซึ่งคล้ายกับตารางในฐานข้อมูลเชิงสัมพันธ์
คุณสามารถสร้างคอลเลกชันโดยใช้ไฟล์ createCollection()วิธี. วิธีนี้ยอมรับค่าสตริงที่แสดงชื่อของคอลเล็กชันที่จะสร้างและพารามิเตอร์อ็อพชัน (ทางเลือก)
โดยใช้สิ่งนี้คุณสามารถระบุสิ่งต่อไปนี้ -
ขนาดของคอลเลกชัน
สูงสุดจำนวนเอกสารที่ได้รับอนุญาตในคอลเลกชันปกคลุม
คอลเลกชันที่เราสร้างควรจะต่อยอดคอลเลกชัน (คอลเลกชันขนาดคงที่) หรือไม่
คอลเลกชันที่เราสร้างควรได้รับการจัดทำดัชนีอัตโนมัติหรือไม่
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์สำหรับสร้างคอลเลกชันใน MongoDB
db.createCollection("CollectionName")
ตัวอย่าง
วิธีการต่อไปนี้สร้างคอลเลกชันชื่อ ExampleCollection
> use mydb
switched to db mydb
> db.createCollection("ExampleCollection")
{ "ok" : 1 }
>
ในทำนองเดียวกันต่อไปนี้เป็นแบบสอบถามที่สร้างคอลเล็กชันโดยใช้ตัวเลือกของเมธอด createCollection ()
>db.createCollection("mycol", { capped : true, autoIndexId : true, size :
6142800, max : 10000 } )
{ "ok" : 1 }
>
การสร้างคอลเลกชันโดยใช้ Python
ตัวอย่าง python ต่อไปนี้เชื่อมต่อกับฐานข้อมูลใน MongoDB (mydb) และสร้างคอลเล็กชันในนั้น
ตัวอย่าง
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........")
เอาต์พุต
Collection created........
คุณสามารถจัดเก็บเอกสารลงใน MongoDB โดยใช้เมธอดinsert () วิธีนี้ยอมรับเอกสาร JSON เป็นพารามิเตอร์
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของวิธีการแทรก
>db.COLLECTION_NAME.insert(DOCUMENT_NAME)
ตัวอย่าง
> 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 })
>
ในทำนองเดียวกันคุณยังสามารถแทรกเอกสารหลายฉบับโดยใช้ไฟล์ insert() วิธี.
> 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" : [ ]
})
>
การสร้างคอลเลกชันโดยใช้ Python
Pymongo จัดเตรียมเมธอดชื่อ insert_one () เพื่อแทรกเอกสารใน MangoDB วิธีนี้เราต้องส่งเอกสารในรูปแบบพจนานุกรม
ตัวอย่าง
ตัวอย่างต่อไปนี้แทรกเอกสารในคอลเลกชันชื่อตัวอย่าง
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())
เอาต์พุต
{'_id': ObjectId('5d63ad6ce043e2a93885858b'), 'name': 'Ram', 'age': '26', 'city': 'Hyderabad'}
ในการแทรกเอกสารหลายชุดลงใน MongoDB โดยใช้ pymongo คุณต้องเรียกใช้เมธอด 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)
เอาต์พุต
Data inserted ......
['101', '102', '103']
คุณสามารถอ่าน / ดึงเอกสารที่จัดเก็บจาก MongoDB โดยใช้ไฟล์ find()วิธี. วิธีนี้จะดึงข้อมูลและแสดงเอกสารทั้งหมดใน MongoDB ด้วยวิธีที่ไม่มีโครงสร้าง
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของ find() วิธี.
>db.COLLECTION_NAME.find()
ตัวอย่าง
สมมติว่าเราได้แทรกเอกสาร 3 ชุดลงในฐานข้อมูลชื่อ testDB ในคอลเลกชันที่มีชื่อตัวอย่างโดยใช้แบบสอบถามต่อไปนี้ -
> 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)
คุณสามารถดึงเอกสารที่แทรกโดยใช้เมธอด find () เป็น -
> 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" }
>
คุณยังสามารถดึงเอกสารแรกในคอลเล็กชันโดยใช้เมธอด findOne () เป็น -
> db.sample.findOne()
{ "_id" : "1001", "name" : "Ram", "age" : "26", "city" : "Hyderabad" }
การดึงข้อมูล (ค้นหา) โดยใช้ Python
find_One() วิธีการของ pymongo ใช้ในการดึงเอกสารเดียวตามแบบสอบถามของคุณในกรณีที่ไม่ตรงกับวิธีนี้จะไม่คืนค่าอะไรเลยและหากคุณไม่ใช้แบบสอบถามใด ๆ ระบบจะส่งคืนเอกสารแรกของคอลเล็กชัน
วิธีนี้มีประโยชน์เมื่อใดก็ตามที่คุณต้องการดึงเอกสารผลลัพธ์เพียงเอกสารเดียวหรือหากคุณแน่ใจว่าแบบสอบถามของคุณส่งคืนเอกสารเพียงฉบับเดียว
ตัวอย่าง
ตามตัวอย่าง python ดึงเอกสารแรกของคอลเลกชัน -
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"}))
เอาต์พุต
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'}
หากต้องการรับเอกสารหลายฉบับในแบบสอบถามเดียว (วิธีการค้นหาการโทรครั้งเดียว) คุณสามารถใช้ไฟล์ find()วิธีการของ pymongo หากยังไม่ผ่านการสืบค้นใด ๆ สิ่งนี้จะส่งคืนเอกสารทั้งหมดของคอลเล็กชันและหากคุณส่งแบบสอบถามไปยังวิธีนี้ระบบจะส่งคืนเอกสารที่ตรงกันทั้งหมด
ตัวอย่าง
#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)
เอาต์พุต
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'}
ขณะดึงข้อมูลโดยใช้ find()วิธีการคุณสามารถกรองเอกสารโดยใช้วัตถุแบบสอบถาม คุณสามารถส่งแบบสอบถามที่ระบุเงื่อนไขสำหรับเอกสารที่ต้องการเป็นพารามิเตอร์ไปยังวิธีนี้
ตัวดำเนินการ
ต่อไปนี้เป็นรายชื่อตัวดำเนินการที่ใช้ในการสืบค้นใน MongoDB
การดำเนินการ | ไวยากรณ์ | ตัวอย่าง |
---|---|---|
ความเท่าเทียมกัน | {"key": "value"} | db.mycol.find ({"by": "tutorials point"}) |
น้อยกว่า | {"คีย์": {$ lt: "value"}} | db.mycol.find ({"likes": {$ lt: 50}}) |
น้อยกว่าเท่ากับ | {"key": {$ lte: "value"}} | db.mycol.find ({"ชอบ": {$ lte: 50}}) |
มากกว่า | {"key": {$ gt: "value"}} | db.mycol.find ({"ชอบ": {$ gt: 50}}) |
มากกว่าที่เท่าเทียมกัน | {"คีย์" {$ gte: "value"}} | db.mycol.find ({"likes": {$ gte: 50}}) |
ไม่เท่ากับ | {"key": {$ ne: "value"}} | db.mycol.find ({"ชอบ": {$ ne: 50}}) |
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ดึงเอกสารในคอลเลกชันที่มีชื่อ 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)
เอาต์พุต
Data inserted ......
Documents in the collection:
{'_id': '1005', 'name': 'Sarmista', 'age': '23', 'city': 'Delhi'}
ตัวอย่าง 2
ตัวอย่างต่อไปนี้ดึงเอกสารในคอลเล็กชันที่มีค่าอายุมากกว่า 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)
เอาต์พุต
Data inserted ......
Documents in the collection:
{'_id': '1002', 'name': 'Rahim', 'age': '27', 'city': 'Bangalore'}
{'_id': '1003', 'name': 'Robert', 'age': '28', 'city': 'Mumbai'}
ในขณะที่ดึงเนื้อหาของคอลเล็กชันคุณสามารถจัดเรียงและจัดเรียงตามลำดับจากน้อยไปมากหรือมากไปหาน้อยโดยใช้ sort() วิธี.
ด้วยวิธีนี้คุณสามารถส่งผ่านฟิลด์และลำดับการจัดเรียงซึ่งเป็น 1 หรือ -1 โดยที่ 1 คือลำดับจากน้อยไปมากและ -1 คือลำดับจากมากไปหาน้อย
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของการจัดเรียง ()วิธีการ
>db.COLLECTION_NAME.find().sort({KEY:1})
ตัวอย่าง
สมมติว่าเราได้สร้างคอลเลกชันและใส่เอกสาร 5 ชุดลงไปดังที่แสดงด้านล่าง -
> 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" : [ ]
})
บรรทัดต่อไปนี้จะดึงเอกสารทั้งหมดของคอลเลกชันซึ่งเรียงลำดับจากน้อยไปมากตามอายุ
> 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" }
การเรียงลำดับเอกสารโดยใช้ Python
ในการเรียงลำดับผลลัพธ์ของแบบสอบถามจากน้อยไปหามากหรือจากมากไปหาน้อย pymongo จะให้ไฟล์ sort()วิธี. สำหรับวิธีนี้ให้ส่งค่าตัวเลขที่แสดงจำนวนเอกสารที่คุณต้องการในผลลัพธ์
ตามค่าเริ่มต้นวิธีนี้จะเรียงลำดับเอกสารจากน้อยไปหามากตามฟิลด์ที่ระบุ หากคุณต้องการเรียงลำดับจากมากไปหาน้อยให้ส่ง -1 พร้อมกับชื่อฟิลด์ -
coll.find().sort("age",-1)
ตัวอย่าง
ตัวอย่างต่อไปนี้ดึงเอกสารทั้งหมดของคอลเลกชันที่จัดเรียงตามค่าอายุจากน้อยไปมาก -
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)
เอาต์พุต
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'}
คุณสามารถลบเอกสารในคอลเลกชันโดยใช้ไฟล์ remove()วิธีการของ MongoDB วิธีนี้ยอมรับพารามิเตอร์ทางเลือกสองตัว -
เกณฑ์การลบที่ระบุเงื่อนไขในการลบเอกสาร
เพียงรายการเดียวหากคุณส่งพารามิเตอร์ true หรือ 1 เป็นวินาทีเอกสารจะถูกลบเพียงรายการเดียว
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของวิธี remove () -
>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)
ตัวอย่าง
สมมติว่าเราได้สร้างคอลเลกชันและใส่เอกสาร 5 ชุดลงไปดังที่แสดงด้านล่าง -
> 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" : [ ]
})
การค้นหาต่อไปนี้จะลบเอกสารของคอลเล็กชันซึ่งมีค่าชื่อเป็น 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" }
ถ้าคุณเรียก remove() โดยไม่ผ่านเกณฑ์การลบเอกสารทั้งหมดในคอลเล็กชันจะถูกลบ
> db.sample.remove({})
WriteResult({ "nRemoved" : 5 })
> db.sample.find()
การลบเอกสารโดยใช้ Python
หากต้องการลบเอกสารออกจากคอลเล็กชัน MangoDB คุณสามารถลบเอกสารจากคอลเลกชันโดยใช้วิธีการ delete_one() และ delete_many() วิธีการ
วิธีการเหล่านี้ยอมรับออบเจ็กต์แบบสอบถามที่ระบุเงื่อนไขในการลบเอกสาร
วิธี detele_one () จะลบเอกสารเดียวในกรณีที่ตรงกัน หากไม่มีการระบุแบบสอบถามวิธีนี้จะลบเอกสารแรกในคอลเล็กชัน
ตัวอย่าง
ตัวอย่าง python ต่อไปนี้จะลบเอกสารในคอลเล็กชันซึ่งมีค่า id เป็น 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)
เอาต์พุต
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'}
ในทำนองเดียวกัน delete_many() วิธีการ pymongo จะลบเอกสารทั้งหมดที่ตรงตามเงื่อนไขที่ระบุ
ตัวอย่าง
ตัวอย่างต่อไปนี้ลบเอกสารทั้งหมดในคอลเล็กชันที่มีค่าอายุมากกว่า 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)
เอาต์พุต
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'}
หากคุณเรียกใช้เมธอด delete_many () โดยไม่ส่งแบบสอบถามใด ๆ วิธีนี้จะลบเอกสารทั้งหมดในคอลเล็กชัน
coll.delete_many({})
คุณสามารถลบคอลเลกชันโดยใช้ drop() วิธีการของ MongoDB
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของ drop () วิธีการ -
db.COLLECTION_NAME.drop()
ตัวอย่าง
ต่อไปนี้ตัวอย่างหยดคอลเลกชันที่มีชื่อตัวอย่าง -
> show collections
myColl
sample
> db.sample.drop()
true
> show collections
myColl
การทิ้งคอลเลคชันโดยใช้ Python
คุณสามารถวาง / ลบคอลเลกชันจากปัจจุบันได้โดยเรียกใช้เมธอด drop ()
ตัวอย่าง
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)
เอาต์พุต
List of collections:
coll
data
collection
myColl
List of collections after dropping two of them:
coll
myColl
คุณสามารถอัปเดตเนื้อหาของเอกสารที่มีอยู่โดยใช้ไฟล์ update() วิธีการหรือ save() วิธี.
วิธีการอัปเดตจะแก้ไขเอกสารที่มีอยู่ในขณะที่วิธีการบันทึกจะแทนที่เอกสารที่มีอยู่ด้วยเอกสารใหม่
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของวิธีการ update () และ save () ของ MangoDB -
>db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)
Or,
db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
ตัวอย่าง
สมมติว่าเราได้สร้างคอลเลกชันในฐานข้อมูลและแทรก 3 ระเบียนในนั้นดังที่แสดงด้านล่าง -
> 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)
วิธีการต่อไปนี้จะอัปเดตค่าเมืองของเอกสารด้วย 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" }
ในทำนองเดียวกันคุณสามารถแทนที่เอกสารด้วยข้อมูลใหม่ได้โดยบันทึกด้วย id เดียวกันโดยใช้เมธอด 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" }
การอัปเดตเอกสารโดยใช้ python
คล้ายกับเมธอด find_one () ที่ดึงเอกสารเดี่ยวเมธอด update_one () ของ pymongo จะอัปเดตเอกสารเดียว
วิธีนี้ยอมรับการสอบถามที่ระบุเอกสารที่จะอัปเดตและการดำเนินการอัปเดต
ตัวอย่าง
ตัวอย่าง python ต่อไปนี้จะอัพเดตค่าตำแหน่งของเอกสารในคอลเล็กชัน
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)
เอาต์พุต
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'}
ในทำนองเดียวกัน update_many() วิธีการของ pymongo จะอัพเดตเอกสารทั้งหมดที่ตรงตามเงื่อนไขที่ระบุ
ตัวอย่าง
ตัวอย่างต่อไปนี้อัปเดตค่าตำแหน่งในเอกสารทั้งหมดในคอลเล็กชัน (เงื่อนไขว่างเปล่า) -
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)
เอาต์พุต
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'}
ในขณะที่ดึงเนื้อหาของคอลเล็กชันคุณสามารถ จำกัด จำนวนเอกสารในผลลัพธ์ได้โดยใช้วิธีการ จำกัด () วิธีนี้ยอมรับค่าตัวเลขที่แสดงจำนวนเอกสารที่คุณต้องการในผลลัพธ์
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของวิธีการ จำกัด () -
>db.COLLECTION_NAME.find().limit(NUMBER)
ตัวอย่าง
สมมติว่าเราได้สร้างคอลเลกชันและใส่เอกสาร 5 ชุดลงไปดังที่แสดงด้านล่าง -
> 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" : [ ]
})
บรรทัดต่อไปนี้จะดึงเอกสาร 3 ชุดแรกของคอลเล็กชัน
> 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" }
การ จำกัด เอกสารโดยใช้ Python
ในการ จำกัด ผลลัพธ์ของแบบสอบถามไว้ที่เอกสารจำนวนหนึ่ง pymongo ให้ไฟล์ limit()วิธี. วิธีนี้ส่งค่าตัวเลขที่แสดงจำนวนเอกสารที่คุณต้องการในผลลัพธ์
ตัวอย่าง
ตัวอย่างต่อไปนี้ดึงเอกสารสามชุดแรกในคอลเลกชัน
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)
เอาต์พุต
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'}