Python MongoDB - Hızlı Kılavuz

Pymongo, MongoDB ile çalışmak için araçlar sağlayan bir python dağıtımıdır, MongoDB veritabanı ile python'dan iletişim kurmanın en çok tercih edilen yoludur.

Kurulum

Pymongo'yu kurmak için öncelikle python3 (PIP ile birlikte) ve MongoDB'yi doğru şekilde kurduğunuzdan emin olun. Ardından aşağıdaki komutu yürütün.

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

Doğrulama

Pymongo'yu kurduktan sonra yeni bir metin belgesi açın, aşağıdaki satırı içine yapıştırın ve test.py olarak kaydedin.

import pymongo

Eğer pymongo'yu doğru bir şekilde kurduysanız, test.py'yi aşağıda gösterildiği gibi çalıştırırsanız, herhangi bir sorun yaşamazsınız.

D:\Python_MongoDB>test.py
D:\Python_MongoDB>

Diğer veritabanlarından farklı olarak, MongoDB bir veritabanı oluşturmak için ayrı bir komut sağlamaz.

Genel olarak, kullanım komutu belirli bir veritabanını seçmek / ona geçiş yapmak için kullanılır. Bu komut başlangıçta belirttiğimiz veritabanının var olup olmadığını doğrular, eğer varsa ona bağlanır. Eğer veritabanı kullan komutu ile belirtmişsek, yeni bir veritabanı oluşturulacaktır.

Bu nedenle, MongoDB'de bir veritabanı oluşturabilirsiniz. Use komut.

Sözdizimi

Temel sözdizimi use DATABASE ifade aşağıdaki gibidir -

use DATABASE_NAME

Misal

Aşağıdaki komut mydb adında bir veritabanı oluşturur.

>use mydb
switched to db mydb

Oluşturma işleminizi db komutunu kullanarak doğrulayabilirsiniz , bu mevcut veritabanını görüntüler.

>db
mydb

Python Kullanarak Veritabanı Oluşturma

MongoDB'ye pymongo kullanarak bağlanmak için, bir MongoClient içe aktarmanız ve oluşturmanız gerekir, ardından öznitelik tutkusu içinde oluşturmanız gereken veritabanına doğrudan erişebilirsiniz.

Misal

Aşağıdaki örnek, MangoDB'de bir veritabanı oluşturur.

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())

Çıktı

Database created........
List of databases after creating new one:
['admin', 'config', 'local', 'mydb']

Bir MongoClient oluştururken bağlantı noktası ve ana bilgisayar adlarını da belirtebilir ve veritabanlarına sözlük stilinde erişebilirsiniz.

Misal

from pymongo import MongoClient

#Creating a pymongo client
client = MongoClient('localhost', 27017)

#Getting the database instance
db = client['mydb']
print("Database created........")

Çıktı

Database created........

MongoDB'deki bir koleksiyon, bir dizi belgeyi barındırır, ilişkisel veritabanlarındaki bir tabloya benzer.

Kullanarak bir koleksiyon oluşturabilirsiniz. createCollection()yöntem. Bu yöntem, oluşturulacak koleksiyonun adını ve bir seçenekler (isteğe bağlı) parametresini temsil eden bir String değerini kabul eder.

Bunu kullanarak aşağıdakileri belirtebilirsiniz -

  • Boyut koleksiyonunun.

  • Max şapkalı koleksiyonunda izin doküman sayısı.

  • Oluşturduğumuz koleksiyonun sınırlı koleksiyon (sabit boyutlu koleksiyon) olup olmayacağı.

  • Oluşturduğumuz koleksiyonun otomatik dizine eklenip eklenmeyeceği.

Sözdizimi

MongoDB'de bir koleksiyon oluşturmak için sözdizimi aşağıdadır.

db.createCollection("CollectionName")

Misal

Aşağıdaki yöntem, ExampleCollection adlı bir koleksiyon oluşturur.

> use mydb
switched to db mydb
> db.createCollection("ExampleCollection")
{ "ok" : 1 }
>

Benzer şekilde, createCollection () yönteminin seçeneklerini kullanarak bir koleksiyon oluşturan bir sorgu aşağıda verilmiştir.

>db.createCollection("mycol", { capped : true, autoIndexId : true, size :
6142800, max : 10000 } )
{ "ok" : 1 }
>

Python Kullanarak Koleksiyon Oluşturma

Aşağıdaki python örneği MongoDB'deki (mydb) bir veritabanına bağlanır ve içinde bir koleksiyon oluşturur.

Misal

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........")

Çıktı

Collection created........

İnsert () yöntemini kullanarak belgeleri MongoDB'de saklayabilirsiniz . Bu yöntem, bir JSON belgesini parametre olarak kabul eder.

Sözdizimi

Ekleme yönteminin sözdizimi aşağıdadır.

>db.COLLECTION_NAME.insert(DOCUMENT_NAME)

Misal

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

Benzer şekilde, birden çok belgeyi de insert() yöntem.

> 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 Kullanarak Koleksiyon Oluşturma

Pymongo, MangoDB'ye bir belge eklemek için insert_one () adlı bir yöntem sağlar. Bu yönteme belgeyi sözlük formatında geçirmemiz gerekiyor.

Misal

Aşağıdaki örnek, example adlı koleksiyona bir belge ekler.

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())

Çıktı

{'_id': ObjectId('5d63ad6ce043e2a93885858b'), 'name': 'Ram', 'age': '26', 'city': 'Hyderabad'}

Pymongo kullanarak MongoDB'ye birden çok belge eklemek için, insert_many () yöntemini çağırmanız gerekir.

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)

Çıktı

Data inserted ......
['101', '102', '103']

Depolanan belgeleri MongoDB'den okuyabilir / alabilirsiniz. find()yöntem. Bu yöntem, MongoDB'deki tüm belgeleri yapılandırılmamış bir şekilde alır ve görüntüler.

Sözdizimi

Aşağıdaki sözdizimi find() yöntem.

>db.COLLECTION_NAME.find()

Misal

Aşağıdaki sorguları kullanarak örnek adlı bir koleksiyona testDB adlı bir veritabanına 3 belge eklediğimizi varsayalım -

> 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)

Eklenen belgeleri aşağıdaki gibi find () yöntemini kullanarak alabilirsiniz:

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

Ayrıca findOne () yöntemini kullanarak koleksiyondaki ilk belgeyi şu şekilde alabilirsiniz:

> db.sample.findOne()
{ "_id" : "1001", "name" : "Ram", "age" : "26", "city" : "Hyderabad" }

Python Kullanarak Veri Alma (bul)

find_One() pymongo yöntemi, sorgunuza bağlı olarak tek bir belgeyi almak için kullanılır, eşleşme olmaması durumunda bu yöntem hiçbir şey döndürmez ve herhangi bir sorgu kullanmazsanız koleksiyonun ilk belgesini döndürür.

Bu yöntem, bir sonucun yalnızca bir belgesini almanız gerektiğinde veya sorgunuzun yalnızca bir belge döndürdüğünden eminseniz kullanışlı olur.

Misal

Aşağıdaki python örneği, bir koleksiyonun ilk belgesini alır -

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"}))

Çıktı

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

Tek bir sorguda birden çok belge almak için (tek arama veya bulma yöntemi), find()pymongo yöntemi. Herhangi bir sorgu geçmediyse, bu bir koleksiyonun tüm belgelerini döndürür ve bu yönteme bir sorgu ilettiyseniz, eşleşen tüm belgeleri döndürür.

Misal

#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)

Çıktı

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

Kullanırken alırken find()yönteminde, sorgu nesnesini kullanarak belgeleri filtreleyebilirsiniz. Bu yönteme parametre olarak gerekli belgeler için koşulu belirten sorguyu iletebilirsiniz.

Operatörler

MongoDB'deki sorgularda kullanılan operatörlerin listesi aşağıdadır.

Operasyon Sözdizimi Misal
Eşitlik {"key": "değer"} db.mycol.find ({"by": "öğreticiler noktası"})
Daha az {"anahtar": {$ lt: "değer"}} db.mycol.find ({"beğeniler": {$ lt: 50}})
Eşittir Küçüktür {"anahtar": {$ lte: "değer"}} db.mycol.find ({"seviyor": {$ lte: 50}})
Büyüktür {"anahtar": {$ gt: "değer"}} db.mycol.find ({"beğeniler": {$ gt: 50}})
Eşittirden Büyük {"anahtar" {$ gte: "değer"}} db.mycol.find ({"beğeniler": {$ gte: 50}})
Eşit Değil {"anahtar": {$ ne: "değer"}} db.mycol.find ({"seviyor": {$ ne: 50}})

Örnek 1

Aşağıdaki örnek, adı sarmista olan bir koleksiyondaki belgeyi alır.

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)

Çıktı

Data inserted ......
Documents in the collection:
{'_id': '1005', 'name': 'Sarmista', 'age': '23', 'city': 'Delhi'}

Örnek2

Aşağıdaki örnek, yaş değeri 26'dan büyük olan bir koleksiyondaki belgeyi alır.

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)

Çıktı

Data inserted ......
Documents in the collection:
{'_id': '1002', 'name': 'Rahim', 'age': '27', 'city': 'Bangalore'}
{'_id': '1003', 'name': 'Robert', 'age': '28', 'city': 'Mumbai'}

Bir koleksiyonun içeriğini alırken, bunları kullanarak artan veya azalan sıralarda sıralayabilir ve düzenleyebilirsiniz. sort() yöntem.

Bu yönteme alan (lar) ı ve 1 veya -1 olan sıralama düzenini geçirebilirsiniz. Burada, 1 artan düzen içindir ve -1, azalan düzendir.

Sözdizimi

Sort () yönteminin sözdizimi aşağıdadır .

>db.COLLECTION_NAME.find().sort({KEY:1})

Misal

Bir koleksiyon oluşturduğumuzu ve buna aşağıda gösterildiği gibi 5 belge eklediğimizi varsayalım -

> 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" : [ ]
})

Aşağıdaki satır, koleksiyonun yaşına göre artan sırada sıralanmış tüm evraklarını alır.

> 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 Kullanarak Belgeleri Sıralama

Bir sorgunun sonuçlarını artan veya azalan düzende sıralamak için pymongo, sort()yöntem. Bu yönteme, sonuçta ihtiyacınız olan belge sayısını temsil eden bir sayı değeri iletin.

Varsayılan olarak, bu yöntem belgeleri belirtilen alana göre artan sırada sıralar. Azalan düzende sıralamanız gerekirse, alan adıyla birlikte -1'i geçirin -

coll.find().sort("age",-1)

Misal

Aşağıdaki örnek, yaş değerlerine göre artan sırada düzenlenmiş bir koleksiyonun tüm belgelerini alır -

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)

Çıktı

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

Bir koleksiyondaki belgeleri şunu kullanarak silebilirsiniz: remove()MongoDB yöntemi. Bu yöntem iki isteğe bağlı parametreyi kabul eder -

  • Dokümanların silinmesi koşulunu belirten silme kriterleri.

  • Yalnızca bir, ikinci parametre olarak true veya 1 geçerseniz, o zaman yalnızca bir belge silinecektir.

Sözdizimi

Remove () yönteminin sözdizimi aşağıdadır -

>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)

Misal

Bir koleksiyon oluşturduğumuzu ve buna aşağıda gösterildiği gibi 5 belge eklediğimizi varsayalım -

> 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" : [ ]
})

Aşağıdaki sorgu, Sarmista olarak isim değerine sahip olan koleksiyonun belgelerini siler.

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

Eğer çağırırsan remove() yöntemiyle silme kriterleri geçilmezse, koleksiyondaki tüm belgeler silinecektir.

> db.sample.remove({})
WriteResult({ "nRemoved" : 5 })
> db.sample.find()

Python Kullanarak Belgeleri Silme

Bir MangoDB koleksiyonundan belgeleri silmek için, yöntemleri kullanarak bir koleksiyondaki belgeleri silebilirsiniz. delete_one() ve delete_many() yöntemler.

Bu yöntemler, belge silme koşulunu belirten bir sorgu nesnesini kabul eder.

Detele_one () yöntemi, bir eşleşme durumunda tek bir belgeyi siler. Sorgu belirtilmezse, bu yöntem koleksiyondaki ilk belgeyi siler.

Misal

Aşağıdaki python örneği, koleksiyondaki id değeri 1006 olan belgeyi siler.

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)

Çıktı

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

Benzer şekilde, delete_many() pymongo yöntemi, belirtilen koşulu sağlayan tüm belgeleri siler.

Misal

Aşağıdaki örnek, koleksiyondaki yaş değeri 26'dan büyük olan tüm belgeleri siler -

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)

Çıktı

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

Herhangi bir sorgu iletmeden delete_many () yöntemini çağırırsanız, bu yöntem koleksiyondaki tüm belgeleri siler.

coll.delete_many({})

Koleksiyonları silebilirsiniz. drop() MongoDB yöntemi.

Sözdizimi

Drop () yönteminin sözdizimi aşağıdadır -

db.COLLECTION_NAME.drop()

Misal

Aşağıdaki örnek, ad örneği ile toplama bırakır -

> show collections
myColl
sample
> db.sample.drop()
true
> show collections
myColl

Python Kullanarak Koleksiyonu Bırakma

Drop () yöntemini çağırarak mevcut koleksiyondan bir koleksiyonu kaldırabilir / silebilirsiniz.

Misal

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)

Çıktı

List of collections:
coll
data
collection
myColl
List of collections after dropping two of them:
coll
myColl

Mevcut bir belgenin içeriğini güncelleyebilirsiniz. update() yöntem veya save() yöntem.

Güncelleme yöntemi mevcut belgeyi değiştirirken, kaydetme yöntemi mevcut belgeyi yenisiyle değiştirir.

Sözdizimi

MangoDB'nin update () ve save () yöntemlerinin sözdizimi aşağıdadır -

>db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)
Or,
db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})

Misal

Bir veritabanında bir koleksiyon oluşturduğumuzu ve içine aşağıda gösterildiği gibi 3 kayıt eklediğimizi varsayalım -

> 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)

Aşağıdaki yöntem, belgenin şehir değerini 1002 kimliğiyle günceller.

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

Benzer şekilde, save () yöntemini kullanarak belgeyi aynı kimlik ile kaydederek yeni verilerle değiştirebilirsiniz.

> 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 kullanarak belgeleri güncelleme

Tek bir belgeyi alan find_one () yöntemine benzer şekilde, pymongo'nun update_one () yöntemi tek bir belgeyi günceller.

Bu yöntem, hangi belgenin güncelleneceğini ve güncelleme işlemini belirten bir sorguyu kabul eder.

Misal

Aşağıdaki python örneği, bir koleksiyondaki bir belgenin konum değerini günceller.

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)

Çıktı

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

Benzer şekilde, update_many() pymongo yöntemi, belirtilen koşulu sağlayan tüm belgeleri günceller.

Misal

Aşağıdaki örnek, bir koleksiyondaki tüm belgelerdeki konum değerini günceller (boş durum) -

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)

Çıktı

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

Bir koleksiyonun içeriğini alırken, limit () yöntemini kullanarak sonuçtaki belge sayısını sınırlayabilirsiniz. Bu yöntem, sonuçta olmasını istediğiniz belge sayısını temsil eden bir sayı değerini kabul eder.

Sözdizimi

Limit () yönteminin sözdizimi aşağıdadır -

>db.COLLECTION_NAME.find().limit(NUMBER)

Misal

Bir koleksiyon oluşturduğumuzu ve buna aşağıda gösterildiği gibi 5 belge eklediğimizi varsayalım -

> 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" : [ ]
})

Aşağıdaki satır, koleksiyonun ilk 3 belgesini alır.

> 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 Kullanarak Belgeleri Sınırlandırma

Bir sorgunun sonuçlarını belirli sayıda belgeyle sınırlandırmak için pymongo, limit()yöntem. Bu yönteme, sonuçta ihtiyacınız olan belge sayısını temsil eden bir sayı değeri iletin.

Misal

Aşağıdaki örnek, bir koleksiyondaki ilk üç belgeyi alır.

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)

Çıktı

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