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'}