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