Mongo Shell ile Veritabanı İşlemleri
Mongo Shell
MongoDB ile bağlantı kurup veritabanı işlemleri yapabildiğimiz JavaScript tabanlı bir uygulamadır.
<$MONGODB-HOME>/bin/mongo komutu ile çalıştırırız. Şimdi komutu çalıştıralım shell üzerinden veritabanı işlemlerini bir kütüphane veritabanı üzerinden incelemeye başlayalım.
Veritabanı komutları
Mongo Shell çalıştığında varsayılan veritabanına bağlanır. Eğer farklı bir veritabanına geçmek istersek;
use DBNAME
komutunu kullanırız. Bu komut verilen isimde bir veritabanı yok ise oluşturur. Yani bu komut hem veritabanı değiştirmek hem de oluşturmak için kullanılır.
db
komutu ile bağlı bulunduğumuz veritabanını öğreniriz.
show dbs
komutu ile tüm veritabanlarını listeleriz. Bir veritabanı oluşturduktan sonra, listede veritabanını göremeyiz. Görebilmek için veritabanına en az bir doküman eklemek gerekir.
db.dropDatabase()
komutu ile bağlı olduğumuz veritabanını sileriz.
Şimdi sırası ile tüm komutları kullanalım.
1* test isimli bir veritabanı oluşturalım.
1 2 3 4 5 6 |
> use test switched to db test |
2* Veritabanlarını listeleyelim.
1 2 3 4 5 6 7 |
> show dbs local 0.000GB sport 0.000GB |
test isimli veritabanını listede göremedik. Şimdi basit bir insert yapalım ve tekrardan veritabanlarını listeleyelim.
1 2 3 4 5 6 7 8 9 10 |
> db.dummy.insert({"makale":"Mongo Shell"}) WriteResult({ "nInserted" : 1 }) > show dbs local 0.000GB sport 0.000GB test 0.000GB |
Artık veritabanımızı listede görebiliyoruz.
3* Bağlı olduğumuz veritabanını öğrenelim.
1 2 3 4 5 6 |
> db test |
4* test isimli veritabanını silelim.
1 2 3 4 5 6 |
> db.dropDatabase() { "dropped" : "test", "ok" : 1 } |
Shell kullanırken tab’a basarak metotların isimlerini tamamlayabilir ve benzer metotları listeleyebiliriz.
1 2 3 4 5 6 |
> db.drop db.dropAllRoles( db.dropAllUsers( db.dropDatabase( db.dropRole( db.dropUser( |
Koleksiyon komutları
db.createCollection(name, options)
komutu ile yeni bir koleksiyon oluştururuz.
name | String | Koleksiyonun ismi |
options | Document | Koleksiyon ile ilgili opsiyonel özellikleri içerir |
Options 4 fielddan oluşan bir dokümandır.
capped | Boolean | Varsayılan değeri false’dur. True olması, koleksiyonun belirli bir büyüklükte olması anlamına gelir. Maksimum olduğunda, yeni girilen veriler eski verilerin üzerine yazılır. True yapılırsa, size değerininde verilmesi gerekir |
autoIndexID | Boolean | Varsayılan değeri false’dur. True olması, _id alanında otomatik index’in oluşturulması demektir. |
size | number | byte olarak maksimum büyüklük değerini gösterir. Capped true ise bu alan verilmek zorundadır. |
max | number | maksimum doküman sayısını belirleyen değerdir. Capped koleksiyonlar için geçerlidir. |
show collections
komutu ile veritabanındaki koleksiyonları listeleriz.
db.collectionName.drop()
komutu ile koleksiyonu sileriz.
Şimdi sırası ile tüm komutları kullanalım.
1* personel ve department isimli iki koleksiyon oluşturalım.
1 2 3 4 5 6 |
> db.createCollection("personel") { "ok" : 1 } |
1 2 3 4 5 6 |
> db.createCollection("department",{capped:true,autoIndexID:true,size:1048576,max:2000}) { "ok" : 1 } |
2* veritabanındaki koleksiyonları listeleyelim.
1 2 3 4 5 6 7 |
> show collections department personel |
3* department isimli koleksiyonu silelim ve tekrardan koleksiyonları listeleyelim.
1 2 3 4 5 6 7 8 |
> db.department.drop() true > show collections personel |
CRUD Komutları
library isimli bir veritabanı ve books isimli bir koleksiyon oluşturalım.
1 2 3 4 5 6 7 8 9 10 |
> show collections personel > use library switched to db library > db.createCollection("books") { "ok" : 1 } |
1* Insert
db.collectionName.insert(document)
db.collectionName.insert([document,document])
komutu ile koleksiyona doküman ekleriz. Doküman dizisi göndererek çoklu doküman ekleyebiliriz.
1 2 3 4 5 6 |
>db.books.insert({"name":"Kaos","author":"Hasan Köni","publisher":{"name":"Wizart","email":"[email protected]"},"yıl":2016,"sellCount":11283,"tags":["Güncel","İnceleme","Analiz"]} WriteResult({ "nInserted" : 1 }) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
> db.books.insert([{"name":"Korkunç Yıllar","author":"Cengiz Dağcı","publisher":{"name":"Ötüken","email":"[email protected]"},"yıl":1989,"sellCount":28416,"tags":["Roman","Klasik","Türk"]}, {"name":"Onlar da İnsandı","author":"Cengiz Dağcı","publisher":{"name":"Ötüken","email":"[email protected]"},"yıl":1984,"sellCount":29004,"tags":["Roman","Klasik","Türk"]}]) BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] }) |
Bu komutlar ile koleksiyonumuza üç doküman eklemiş oldu.
db.collectionName.save(document)
komutu ile, eğer dokümanın _id değeri yok ise ekleme, var ise güncelleme işlemi yapılır.
1 2 3 4 5 6 |
> db.books.save({ "_id" : ObjectId("5884ae4b51f84536f1f95f36"), "name" : "Kaos", "author" : "Hasan Köni", "publisher" : { "name" : "Wizart", "email" : "[email protected]" }, "yıl" : 2016, "sellCount" : 11283, "tags" : [ "Güncel", "İnceleme", "Analizz" ] }) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) |
2*Update
db.collectionName.update(SELECTION_CRITERIA, UPDATED_DATA)
db.collectionName.save(document)
db.collectionName.save(_id:ObjectId(), document)
update() komutu ile, belli bir kriter verip, sadece ilgili alanı güncelliyoruz. save() komutu ise, eski dokümanı yeni doküman ile değiştirir.
1 2 3 4 5 6 |
> db.books.update({"name":"Kaos"},{$set:{"name":"KAOS"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) |
books koleksiyonunda name değeri Kaos olan dokümanların name değerlerini KAOS olarak günceller. Güncelleme işlemi tek bir doküman üzerinde yapılır. Eğer çoklu güncelleme istersek,
1 2 3 4 5 6 |
> db.books.update({"author":"Cengiz Dağcı"},{$set:{"author":"Cengiz DAĞCI"}},{"multi":true}) WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 }) |
komutunu çalıştırırız.
3*Remove
db.collectionName.remove()
koleksiyondaki tüm kayıtları siler
db.collectionName.remove(DELETION_CRITERIA)
koleksiyonda, kriterlere uyan dokümanları siler.
db.collectionName.remove(DELETION_CRITERIA,1)
koleksiyonda, kriterlere uyan ilk dokümanı siler.
Örnek olarak dummy bir koleksiyona dört adet doküman insert edelim ve silme komutlarının kullanımlarını görelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
> db.dummy.insert([{"title":"Java"},{"title":"Spring"},{"title":"Spring"}]) BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] }) |
Not: dummy isimli bir koleksiyon oluşturmadık. Insert komutu ile kullandığımız koleksiyon yok ise, mongodb bizim için oluşturur.
İlk olarak koleksiyonumuzda bulunan dokümanları listeleyelim.
1 2 3 4 5 6 7 8 |
> db.dummy.find().pretty() { "_id" : ObjectId("588518c351f84536f1f95f3a"), "title" : "Java" } { "_id" : ObjectId("588518c351f84536f1f95f3b"), "title" : "Spring" } { "_id" : ObjectId("588518c351f84536f1f95f3c"), "title" : "Spring" } |
1* title değeri Spring olan tek bir kayıtı silelim ve tekrardan listeleme yapalım.
1 2 3 4 5 6 7 8 9 10 |
> db.dummy.remove({"title":"Spring"},1) WriteResult({ "nRemoved" : 1 }) > db.dummy.find().pretty() { "_id" : ObjectId("588518c351f84536f1f95f3a"), "title" : "Java" } { "_id" : ObjectId("588518c351f84536f1f95f3c"), "title" : "Spring" } > |
2* Tüm dokümanları silelim.
1 2 3 4 5 6 7 8 |
> db.dummy.remove({}) WriteResult({ "nRemoved" : 2 }) > db.dummy.find().pretty() > |
İnşallah faydalı bir yazı olmuştur. MongoDB ile alakalı başka yazılarda görüşmek üzere.
İyi Çalışmalar