Debian’da MongoDB Nasıl Kurulur ve Kullanılır

MongoDB, açık kaynaklı, platformlar arası, dağıtılmış bir NoSQL (SQL Olmayan veya İlişkisel Olmayan) veritabanı sistemidir.  MongoDB, verileri geleneksel SQL veritabanları gibi tablolarda depolamak yerine çeşitli veri formlarını depolamak için esnek belgeler kullanır.  MongoDB, verileri depolamak için ikili JSON biçimi olan BSON biçimini kullanır.

MongoDB, yerleşik yüksek kullanılabilirlik, otomatik yük devretme ve veri yedekliliği ve dağıtılmış kümeler arasında parçalama yoluyla yatay ölçeklendirme özelliklerine sahip dağıtılmış bir NoSQL veritabanıdır ve çok bölgeli coğrafi dağıtımı destekler.  MongoDB ayrıca CRUD işlemlerini (okuma ve yazma), veri toplama boru hattını, metin aramayı ve jeo-uzamsal sorguları destekleyen sorgu API’si sağlar.

MongoDB kullanan bazı önemli şirketler Forbes, Toyota, SEGA, EA, Vodafone, Verizon ve çok daha fazlasıdır.

Bu kılavuzda, MongoDB NoSQL Veritabanını bir Debian 11 sunucusuna kuracaksınız.  Ayrıca Debian sunucunuzu MongoDB konuşlandırması için optimize edeceksiniz.  Bu kılavuzun sonunda, bazı MongoDB işlemlerini, MongoDB’deki temel CRUD’yi (Oluştur, Oku, Güncelle ve Sil) de öğreneceksiniz.

Bu kılavuzu tamamlayarak, optimize edilmiş bir Linux sunucusunda MongoDB kurulu ve çalışır durumda olacaksınız.  Ayrıca, MongoDB’de kullanıcı ve veritabanları oluşturma, veri ekleme ve alma, verileri güncelleme ve verileri silme dahil olmak üzere bazı temel MongoDB işlemlerini anlayacak ve bileceksiniz.

Önkoşullar

Bu kılavuzu tamamlamak için aşağıdaki gereksinimlere sahip olmanız gerekir:

  • Bir Debian 11 veya Debian 12 sunucusu – bu örnek, ‘mongodb-server’ ana bilgisayar adına sahip bir Debian sunucusu kullanır.
  • Sudo/root ayrıcalıklarına sahip root olmayan bir kullanıcı.

Tüm önkoşullar hazır olduğunda, artık MongoDB kurulumunu başlatmaya hazırsınız.

MongoDB Deposu Ekleme

MongoDB’yi kurmak için resmi MongoDB deposunu sisteminize eklemelisiniz.  Ve bu yazının yazıldığı sırada, MongoDB’nin en son sürümü v6.0’dır.  Bu ilk adımda, MongoDB deposunu Debian 11 sisteminize ekleyeceksiniz.

Başlamadan önce, paket dizininizi güncellemek ve yenilemek için aşağıdaki apt komutunu çalıştırın.  Ardından, gnupg2 ve apt-transport-https gibi bazı temel bağımlılıkları kurun.

sudo apt update
sudo apt install gnupg2 apt-transport-https wget curl

İstendiğinde, onaylamak için y yazın ve ENTER’a basın.

install dependencies

Bağımlılıklar yüklendikten sonra, MongoDB deposu için GPG anahtarını indirmek ve eklemek için aşağıdaki komutu çalıştırın.  Bu, ‘server-6.0.asc’ GPG anahtarını otomatik olarak ‘/usr/share/keyrings/mongodb-org-6.0.gpg’ye dönüştürecektir.

wget -q -O- https://www.mongodb.org/static/pgp/server-6.0.asc | \
    gpg --dearmor | sudo tee /usr/share/keyrings/mongodb-org-6.0.gpg > /dev/null 2>&1

Şimdi MongoDB v6.0 için MongoDB deposunu eklemek için aşağıdaki komutu çalıştırın.

Debian 11’de

echo "deb [signed-by=/usr/share/keyrings/mongodb-org-6.0.gpg] http://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 main" | \
    sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

add repo

Debian 12’de

echo "deb [signed-by=/usr/share/keyrings/mongodb-org-6.0.gpg] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/6.0 main" | \
    sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

Debian 11 ve 12 için

Son olarak, aşağıdaki apt komutuyla paket dizininizi güncelleyin ve yenileyin.  Bu, MongoDB deposu için yeni meta verileri alacaktır.

sudo apt update

Bunun gibi bir çıktı almalısınız:

update repo

Daha sonra, Debian sisteminize eklenen MongoDB deposuyla MongoDB kurulumuna başlayacaksınız.

MongoDB Sunucusunu ve Mongosh’u Kurmak

Bu adımda, MongoDB sunucu paketini ve Mongosh’u Debian sunucunuza MongoDB istemcisi olarak kuracaksınız.  MongoDB sunucusunun ve Mongosh v6.0’ın en son sürümünü kuracaksınız.

‘mongodb-org’ ve ‘mongodb-mongosh’ paketlerini kurmak için aşağıdaki apt komutunu çalıştırın.

sudo apt install mongodb-org mongodb-mongosh

İstendiğinde y girin ve devam etmek için ENTER’a basın.

install mongodb

MongoDB kurulduktan sonra, MongoDB hizmetini başlatmak ve etkinleştirmek için aşağıdaki systemctl komut yardımcı programını çalıştırın.

sudo systemctl start mongod
sudo systemctl enable mongod

Şimdi aşağıdaki komutla MongoDB hizmetini doğrulayın.  MongoDB hizmetinin etkinleştirildiğini ve açılışta otomatik olarak çalıştırılacağını görmelisiniz.  Ve MongoDB hizmetinin durumu çalışıyor.

sudo systemctl status mongod

verify mongodb

Artık MongoDB sunucusunu bir Debian 11 sunucusuna kurdunuz.  Bir sonraki adımda, Debian sunucunuzu MongoDB dağıtımı için kuracak ve optimize edeceksiniz.

Sistemin Kurulumu

Bu adımda Debian sunucunuzu MongoDB kurulumu için optimize edeceksiniz.  Öncelikle systemd hizmet dosyası üzerinden Transparent Huge Pages (THP)’yi sisteminizde devre dışı bırakacak, ardından ulimit ve max sanal belleği artıracaksınız.

Öncelikle Şeffaf Büyük Sayfaları (THP) devre dışı bırakacaksınız.  Bunu yapmak için, aşağıdaki nano editör komutunu kullanarak yeni bir sistemd hizmet dosyası ‘/etc/systemd/system/disable-thp.service’ oluşturun.

sudo nano /etc/systemd/system/disable-thp.service

Aşağıdaki satırları dosyaya ekleyin.  Bu hizmet, ‘/sys/kernel/mm/transparent_hugepage/enabled’ ve ‘/sys/kernel/mm/transparent_hugepage/defrag’ dosyalarının içeriğini ‘asla’ olarak değiştirerek THP’yi devre dışı bırakacaktır.

[Unit]
Description=Disable Transparent Huge Pages (THP)
[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"

[Install]
WantedBy=multi-user.target

Dosyayı kaydedin ve bittiğinde düzenleyiciden çıkın.

Şimdi systemd yöneticisini yeniden yüklemek ve değişiklikleri uygulamak için aşağıdaki systemctl komutunu çalıştırın.

sudo systemctl daemon-reload

Bundan sonra, aşağıdaki systemctl komut yardımcı programı aracılığıyla ‘disable-thp’ hizmetini başlatın ve etkinleştirin.  Bununla, artık her açılışta THP’yi devre dışı bırakmış olacaksınız.

sudo systemctl enable disable-thp
sudo systemctl start disable-thp

THP’yi devre dışı bıraktıktan sonra, MongoDB sunucusu için ulimit’i artırmanız gerekecek.

disable thp

Linux sistemindeki varsayılan ulimit ‘1024’ iken, MongoDB sunucusu en az ulimit ‘64000’ gerektiriyordu.  Artık belirli MongoDB kullanıcısı için ulimiti sistem limitleri yapılandırma dosyası aracılığıyla artıracaksınız.

Aşağıdaki nano editör komutunu kullanarak yeni bir yapılandırma dosyası ‘/etc/security/limits.d/mongodb.conf’ oluşturun.

sudo nano /etc/security/limits.d/mongodb.conf

Aşağıdaki satırları dosyaya ekleyin.  Bununla, belirli MongoDB kullanıcısı ‘mongod’ için ulimiti artıracaksınız.

mongod soft nproc 64000
mongod hard nproc 64000
mongod soft nofile 64000
mongod hard nofile 64000

İşiniz bittiğinde kaydedin ve editörden çıkın.

Ulimit artık yapılandırılmış durumdayken, artık ‘/etc/sysctl.conf’ dosyası aracılığıyla Debian sunucunuzdaki maksimum sanal belleği artıracaksınız.

Aşağıdaki nano editör komutunu kullanarak ‘/etc/sysctl.conf’ dosyasını açın.

sudo nano /etc/sysctl.conf

Aşağıdaki satırları satırın sonuna ekleyin.

fs.file-max = 2097152
vm.max_map_count = 262144
vm.swappiness = 1

Dosyayı kaydedin ve bittiğinde düzenleyiciden çıkın.

setup ulimit and max vm memory

Son olarak, MongoDB sunucunuzu yeniden başlatmak ve yaptığınız sistem değişikliklerini uygulamak için aşağıdaki komutu çalıştırın.

sudo reboot

Artık Debian sunucunuz THP devre dışı bırakılmış olarak çalışacak, ‘mongod’ kullanıcısı için ulimit artırılacak ve maksimum sanal bellek de artırılacak.  Bir sonraki adımda, bir yönetici kullanıcı oluşturarak ve kimlik doğrulama ve yetkilendirmeyi etkinleştirerek MongoDB’nin güvenliğini nasıl sağlayacağınızı öğreneceksiniz.

Yönetici MongoDB’yi kurma

Bu adımda, ‘mongosh’ MongoDB istemcisi aracılığıyla MongoDB’de yeni bir kullanıcı oluşturmayı öğreneceksiniz.  Ardından, ‘/etc/mongod.conf’ dosyası aracılığıyla MongoDB sunucunuzda kimlik doğrulama ve yetkilendirmeyi de etkinleştireceksiniz.

Aşağıdaki ‘mongosh’ komutu ile MongoDB kabuğuna giriş yapın.

mongosh

Oturum açtıktan sonra varsayılan ‘test’ veritabanına bağlanmalısınız.

Şimdi MongoDB sunucunuzdaki ücretsiz izlemeyi devre dışı bırakmak için aşağıdaki sorguyu çalıştırın.

db.disableFreeMonitoring()

login mongodb disable monitoring

Ardından, ‘admin’ veritabanını gösterin ve aşağıdaki MongoDB sorgularını kullanarak yeni bir MongoDB yönetici kullanıcısı ‘myAdminUser’ oluşturun.  Ayrıca, yeni kullanıcınız için bir şifre oluşturmanız istenecektir.

use admin
db.createUser(
  {
    user: "myAdminUser",
    pwd: passwordPrompt(),
    roles: [
      { role: "userAdminAnyDatabase", db: "admin" },
      { role: "readWriteAnyDatabase", db: "admin" }
    ]
  }
)

Yeni kullanıcı ve şifre oluşturulduğunda, terminal ekranınızda ‘{ ok: 1 }’ gibi bir çıktı göreceksiniz.  Bu, başarıyla yeni bir kullanıcı oluşturduğunuz anlamına gelir.

create admin user

Şimdi MongoDB kabuğundan çıkmak için Ctrl+d tuşlarına basın veya çıkın yazın.

MongoDB için yeni bir yönetici kullanıcı oluşturduktan sonra, MongoDB sunucunuzda kimlik doğrulama ve yetkilendirmeyi etkinleştireceksiniz.

‘/etc/mongod.conf’ MongoDB yapılandırma dosyasını açmak için aşağıdaki nano editör komutunu çalıştırın.

sudo nano /etc/mongod.conf

‘Security’ parametresinin açıklamasını kaldırın ve aşağıdaki satırlarda ‘yetkilendirme: etkin’ seçeneğini ekleyin.

security:
    authorization: enabled

Dosyayı kaydedin ve editörden çıkın.

Son olarak, MongoDB hizmetini yeniden başlatmak ve değişiklikleri uygulamak için aşağıdaki systemctl komut yardımcı programını çalıştırın.

sudo systemctl restart mongod

Bununla, MongoDB sunucusu ‘myAdminuser’ için bir yönetici kullanıcı oluşturdunuz ve parolayı oluşturdunuz.  Ayrıca, ‘/etc/mongod.conf’ yapılandırma dosyası aracılığıyla MongoDB sunucunuzda kimlik doğrulama ve yetkilendirmeyi etkinleştirdiniz.  Bir sonraki adımda, MongoDB dağıtımınızın güvenliğini sağladığınızdan emin olmak için MongoDB yönetici kullanıcınızı ve kimlik doğrulamasını doğrulayacaksınız.

MongoDB Yönetici Kullanıcısını Doğrulama

Bu adımda, mongosh komutu aracılığıyla MongoDB sunucusunda oturum açarak yeni MongoDB yönetici kullanıcısını doğrulayacak ve yeni yönetici kullanıcıyı kullanarak kimlik doğrulamasını doğrulayacaksınız.

MongoDB kabuğunda oturum açmak için aşağıdaki komutu çalıştırın.

mongosh

Şimdi yeni MongoDB yönetici kullanıcısı ‘myAdminUser’ kullanarak kimlik doğrulaması yapmak için aşağıdaki sorguyu çalıştırın.  İstendiğinde, MongoDB yönetici kullanıcınızı girin.

use admin
db.auth("myAdminUser", passwordPrompt())

Başarılı olduğunda, ‘{ ok: 1 }’ gibi bir çıktı almalısınız.

verify admin

Ayrıca tek satırlık bir komutla MongoDB’ye bağlanabilir ve aynı anda kimlik doğrulaması yapabilirsiniz.  Varsayılan olarak 27017 bağlantı noktasında çalışan MongoDB sunucusuna ‘myAdminUser’ yönetici kullanıcısı aracılığıyla bağlanmak için aşağıdaki ‘mongosh’ komutunu çalıştırın.

mongosh --port 27017 --authenticationDatabase \
    "admin" -u "myAdminUser" -p

Parola istendiğinde, MongoDB yöneticinizi girin ve şimdi MongoDB kabuğunda oturum açmış olmalısınız.

Şimdi MongoDB sunucusuna olan mevcut bağlantıyı doğrulamak için aşağıdaki sorguyu çalıştırın.

db.runCommand({connectionStatus : 1})

Buna benzer bir çıktı almalısınız – MongoDB sunucusuna bağlandınız ve yönetici kullanıcı ‘myAdminUser’ olarak doğrulandınız.

login2

MongoDB’de Kullanıcı ve Veritabanı Oluşturma

Bu adımda, uygulamanız için kullanılabilecek yeni bir MongoDB kullanıcısı oluşturmayı öğreneceksiniz.  Belirli veritabanına erişimi olan (okuma veya yazma) yeni bir MongoDB kullanıcısı oluşturacaksınız.  Ayrıca MongoDB kabuğunda oturum açarak ve ayrıntılı bağlantıyı doğrulayarak yeni MongoDB kullanıcısını doğrulayacaksınız.

Başlamadan önce, MongoDB sunucusunda oturum açtığınızdan emin olun.  Ardından, aşağıdaki sorguyu kullanarak ‘testdb’ veritabanına geçin.

use tesdb

Şimdi yeni bir MongoDB kullanıcısı oluşturmak için aşağıdaki sorguyu çalıştırın.  Bu örnekte, ‘testdb’ veritabanına ‘readWrite’ rolü ve ‘raporlama’ veritabanına ‘okuma’ rolüyle yeni bir ‘MyTestUser’ kullanıcısı oluşturacaksınız.

db.createUser(
  {
    user: "myTestUser",
    pwd:  passwordPrompt(),   // or cleartext password
    roles: [ { role: "readWrite", db: "testdb" },
             { role: "read", db: "reporting" } ]
  }
)

İstendiğinde, yeni kullanıcınız için parolayı girin.  Ardından ‘{ ok: 1 }’ gibi bir çıktı alacaksınız, bu da yeni kullanıcının oluşturulduğu anlamına gelir.

create database and user

Yeni bir MongoDB kullanıcısı oluşturduktan sonra, artık MongoDB’deki kullanıcı listesini doğrulayacaksınız.

‘admin’ veritabanına geçmek için aşağıdaki sorguyu çalıştırın.  Ardından, MongoDB sunucunuzdaki kullanıcı listesini doğrulayın.

use admin
db.system.users.find()

Bunun gibi bir çıktı almalısınız – Yeni kullanıcı ‘myTestUser’ oluşturuldu.

list users

MongoDB kabuğundan çıkmak/çıkış yapmak için Ctrl+d tuşlarına basın veya Quit yazın.

Son olarak, yeni kullanıcı ‘myTestUser’ aracılığıyla MongoDB’de oturum açmak için aşağıdaki mongosh komutunu çalıştırın.  Kullanıcınız için parolayı girin.

mongosh --port 27017 -u "myTestUser" \
    --authenticationDatabase "testdb" -p

Giriş yaptıktan sonra mevcut bağlantınızın durumunu doğrulamak için aşağıdaki sorguyu çalıştırın.

db.runCommand({connectionStatus : 1})

Buna benzer bir çıktı almalısınız – bununla, artık MongoDB sunucusunda oturum açtınız ve yeni kullanıcı ‘myTestUser’ olarak yetkilendirildiniz.

verify login

Bununla, uygulama dağıtımınız için kullanılabilecek yeni bir MongoDB kullanıcısı ‘myTestUser’ oluşturdunuz.  Bu kullanıcının ayrıca ‘testdb’ veritabanına ‘readWrite’ ve ‘raporlama’ veritabanına ‘salt okunur’ rolü için ayrıcalıkları/rolleri vardır.

Bir sonraki adımda, MongoDB’nin atıl ve veri alma, veri güncelleme ve MongoDB sunucusundan veri silmeyi içeren temel operasyonunu öğreneceksiniz.

Veri Ekleme ve Sorgulama

Yeni bir MongoDB kullanıcısı oluşturduktan sonra, veritabanı oluşturmayı, veri eklemeyi ve MongoDB’den veri almayı öğreneceksiniz.  MongoDB’ye veri eklemek için ‘insertOne’ sorgusunu ve ‘insertMany’ sorgusunu nasıl kullanacağınızı ve ‘$in’ ve ‘$gte’ gibi sorgu işleçlerini nasıl kullanacağınızı öğreneceksiniz.

İlk olarak, aşağıdaki sorguyu kullanarak ‘testdb’ veritabanına geçin.

use testdb

Yeni veriler eklemek ve ‘testdb’ veritabanına yeni bir koleksiyon oluşturmak için aşağıdaki sorguyu çalıştırın.  Bu örnekte, ‘testdb’ veritabanına yeni bir ‘filmler’ koleksiyonu oluşturacaksınız ve yeni veriler eklemek için ‘inertOne’ sorgusunu kullanacaksınız.

‘insertOne’ sorgusu, MongoDB koleksiyonuna yeni bir/tek veri eklemek için kullanılır.

db.movies.insertOne(
  {
    title: "The Hobbit",
    genres: [ "Adventure", "Fantasy" ],
    runtime: 172,
    rated: "R",
    year: 2012,
    directors: [ "Peter Jackson" ],
    cast: [ "Martin Freeman", "Ian McKellen", "Richard Armitage" ],
    type: "movie"
  }
)

Şimdi ‘acnowledged: ok’ gibi bir çıktı alacaksınız, bu da yeni verilerin eklendiği ve yeni koleksiyonun oluşturulduğu anlamına gelir.

create datbase inerty data

Şimdi ‘testdb’ veritabanındaki koleksiyonların listesini doğrulamak ve ‘testdb’ içindeki mevcut verileri göstermek için aşağıdaki sorguyu çalıştırın.

‘Koleksiyonu göster’ sorgusu size mevcut veritabanındaki koleksiyonların/tabloların listelerini gösterecek ve ‘bul’ sorgusu veritabanınızdaki mevcut verileri gösterecektir.  Belirli alanları ‘bul’ sorgusu aracılığıyla da filtreleyebilirsiniz.

show collections
db.movies.find( { title: "The Hobbit" } )

Bunun gibi bir çıktı almalısınız – ‘filmler’ koleksiyonu ‘testdb’ veritabanında mevcuttur.  Ayrıca, eklediğiniz yeni verileri de

list collections show data

Ardından, ‘insertMany’ sorgusu aracılığıyla aynı anda birden fazla veri ekleyebilirsiniz.  ‘insertMany’ sorgusu yoluyla ‘movies’ koleksiyonuna iki veri eklemek için aşağıdaki sorguyu çalıştırın.

db.movies.insertMany([
   {
      title: "The Lord of the Rings",
      genres: [ "Action", "Adventure", "Drama" ],
      runtime: 240,
      rated: "PG-13",
      year: 2001,
      directors: [ "Peter Jackson" ],
      cast: [ "Elijah Wood", "Ian McKellen", "Orlando Bloom" ],
      type: "movie"
    },
    {
      title: "Harry Potter",
      genres: [ "Adventure", "Family", "Fantasy" ],
      runtime: 140,
      rated: "R",
      year: 2007,
      directors: [ "David Yates" ],
      cast: [ "Daniel Radcliffe", "Emma Watson", "Rupert Grint" ],
      type: "movie"
    },
    {
    title: "Transformers",
    genres: [ "Adventure", "Action", "Sci-Fi" ],
    runtime: 150,
    rated: "PG-13",
    year: 2007,
    directors: [ "Michael Bay" ],
    cast: [ "Shia LaBeouf", "Megan Fox", "Josh Duhamel" ],
    type: "movie"
    }
])

Çıktı:

insert multiple data

Şimdi verilerinizi almak için aşağıdaki ‘bul’ sorgusunu çalıştırın.  Bununla, ‘yönetmenler: “Peter Jackson”’ filtresiyle verileri alacaksınız.

db.movies.find( { directors: "Peter Jackson" })

Şunun gibi bir çıktı alacaksınız – ‘Yönetmenleri: “Peter Jackson”’ olan tüm filmler terminalinizde gösterilecektir.

retrieve specific data

Ardından, sorgu işleçlerini kullanarak ‘bul’ sorgusunda koşulları da belirleyebilirsiniz.

“Türler”in “Eylem”, “Aile” ve/veya “Bilim Kurgu” olduğu tüm verileri almak için aşağıdaki sorguyu çalıştırın.  ‘$in’ operatörü, bir dizide belirtilen değerlerden herhangi biriyle eşleşen verileri almak için kullanılabilir.

db.movies.find( { genres: { $in: [ "Action", "Family", "Sci-Fi" ] } } )

retrieve with in query

Deneyebileceğiniz başka bir sorgu işleci, belirli bir değerden büyük veya ona eşit olan verileri almak için kullanılabilen ‘$gte’ işlecidir.

‘$gte’ sorgu operatörüyle veri almak için aşağıdaki sorguyu çalıştırın.  Bu, çalışma süresi ‘150’den büyük veya ona eşit olan ‘türleri: “Macera”‘ olan tüm filmleri getirecektir.

db.movies.find( { genres: "Adventure", "runtime": { $gte: 150 } } )

Buna benzer bir çıktı alacaksınız – Bu örnekte, ‘Macera’ türünde çalışma süreleri ‘150’ veya daha fazla olan üç film alacaksınız.

retrive with gte query

Bunu göz önünde bulundurarak, artık MongoDB’ye veri eklemeyi ve almayı öğrendiniz.  Bir veri eklemek için ‘insertOne’ temel sorgusunu ve bazı verileri aynı anda eklemek için ‘insertMany’ sorgusunu öğrendiniz.

Ardından, MongoDB’den veri almak için ‘bul’ sorgusunun temel kullanımını da öğrendiniz.  Buna ek olarak, MongoDB’de ‘$in’ ve ‘$gte’ operatör sorgularını nasıl kullanacağınızı da öğrendiniz.

Bir sonraki adımda, MongoDB koleksiyonlarındaki verileri nasıl güncelleyeceğinizi öğreneceksiniz.

MongoDB’de Verileri Güncelleme

Bu adımda, belge içindeki bir alanı güncellemek için ‘updateOne’ ve tamamen ilk eşleşen verileri yeni verilerle değiştirmek için ‘replaceOne’ kullanmak üzere iki sorgu kullanarak MongoDB’deki verileri nasıl güncelleyeceğinizi öğreneceksiniz.

MongoDB’deki verileri güncellemek için birden çok yöntem ve sorgu kullanabilirsiniz.  Bu örnekte, ‘updateOne’ ve ‘replaceOne’ sorgularını nasıl kullanacağınızı öğreneceksiniz.  ‘updateOne’ sorgusu, belgedeki tek bir alanı güncellemek için kullanılabilirken, ‘replaceOne’ tüm belgenin yerini alacaktır.

‘updateOne’ sorgusunu kullanarak verileri güncellemek için aşağıdaki sorguyu çalıştırın.  Bu örnekte, ‘Transformers’ filmindeki ‘puan: “PG-13“’ü ‘derece: “R“’ olarak güncelleyeceksiniz.

db.movies.updateOne( { title: "Transformers" },
{
  $set: {
    rated: "R"
  }
})

‘matchedCount: 1’ ve ‘modifiedCount: 1’ gibi bir çıktı almalısınız.

update data

Şimdi yeni verileri aşağıdaki sorgu ile doğrulayın.  ‘Transformers’ filmindeki verilerin güncellendiğini görmelisiniz.

db.movies.find( { title: "Transformers" })

verify updated data

Ardından, filtredeki ilk eşleşen verileri değiştirmek ve tüm belgeyi yeni verilerle değiştirmek için aşağıdaki ‘replaceOne’ sorgusunu çalıştırın.  Bu örnekte, ‘Transformers’ filmindeki tüm belgeyi yeni verilerle değiştireceksiniz.

db.movies.replaceOne(
  { title: "Transformers" },
  {
    title: "Transformers: Dark of the Moon",
    genres: [ "Adventure", "Action", "Sci-Fi" ],
    runtime: 160,
    rated: "PG-13",
    year: 2011,
    directors: [ "Michael Bay" ],
    cast: [ "Shia LaBeouf", "Rosie Huntington-Whiteley", "Tyrese Gibson" ],
    type: "movie"
  }
)

Şimdi böyle bir çıktı almalısınız.

replace data

Şimdi MongoDB’nizdeki yeni güncellenen verileri doğrulamak için aşağıdaki sorguyu çalıştırın.

db.movies.find( { title: "Transformers" })
db.movies.find( { title: "Transformers: Dark of the Moon" })

Buna benzer bir çıktı almalısınız – ‘Transformers’ filmi kaldırılır/yeni ‘Transformers: Dark of the Moon’ filmi ile değiştirilir.

verifgy replaced data

MongoDB’deki Verileri Silme

Bu adımda, bir MongoDB belgesindeki verileri nasıl sileceğinizi öğreneceksiniz.  Ardından, MongoDB’de veritabanını ve kullanıcıyı nasıl sileceğinizi öğreneceksiniz.

MongoDB koleksiyonundan veri silmek için aşağıdaki komutu çalıştırın.  Bu örnekte, ‘deleteMany’ sorgusu aracılığıyla ‘Transformers: Dark of the Moon’ belgesinin tamamını sileceksiniz.

db.movies.deleteMany( { title: "Transformers: Dark of the Moon" } )
db.movies.find( { title: "Transformers: Dark of the Moon" })

You should receive an output such as ‘deletedCount: 1‘.

delete data

Ardından, aşağıdaki ‘deleteOne’ sorgusu aracılığıyla tek bir belgeyi silmek için aşağıdaki komutu çalıştırın.  Bu, filtre içindeki ilk eşleşen verileri siler.

Bu örnekte, ‘cast: “Ian McKellen”’ ile eşleşen ilk belgeyi sileceksiniz.

db.movies.deleteOne( { cast: "Ian McKellen" } )
db.movies.find( { cast: "Ian McKellen" })

Veriler silinmeden önceki ve sonraki çıktı aşağıdadır.

Kaldırılmadan önce – ‘Oyuncu kadrosuyla iki film görmelisiniz: “Ian McKellen”.

check data

Belge kaldırıldıktan sonra – ‘oyuncu: “Ian McKellen”’ olan tek bir film görmelisiniz.

delete data obne

Ardından, MongoDB’de kullanıcıları ve veritabanlarını nasıl sileceğinizi öğreneceksiniz.  Kullanıcıyı MongoDB’de silmek için, MongoDB yönetici kullanıcınızda ‘root’ rolüne sahip olmanız gerekir.

MongoDB yönetici kullanıcısı ‘myAliceAdmin’ olarak kimlik doğrulaması yapmak için aşağıdaki komutu çalıştırın ve şifrenizi girin.

use admin
db.auth("myAdminUser", passwordPrompt())

Kimlik doğrulamasından sonra, yönetici kullanıcıya ‘root’ rolleri vermek için aşağıdaki sorguyu çalıştırın.

db.grantRolesToUser("myAdminUser", ["root"]);

grant root role

Şimdi ‘testdb’ye geçin ve aşağıdaki sorgu ile ‘testdb’ veritabanındaki kullanıcıları silin.  Bu, ‘myTestUser’ kullanıcısını MongoDB’den siler.

use testdb
db.runCommand( { dropAllUsersFromDatabase: 1 } )

‘{ n:1, ok: 1 }’ gibi bir çıktı almalısınız.

Ardından, ‘testdb’ veritabanını silmek/kaldırmak için aşağıdaki sorguyu çalıştırın.

db.dropDatabase()

Ve ‘{ ok: 1, drop: ‘testdb’ }’ gibi bir çıktı almalısınız.

delete database and users

Artık ‘testdb’ ve veritabanındaki kullanıcılar kaldırıldığına göre.

‘admin’ veritabanına geçmek ve MongoDB sunucunuzdaki veritabanlarının listesini doğrulamak için aşağıdaki sorguyu çalıştırın.  ‘testdb’ veritabanının kaldırıldığını görmelisiniz.

use admin
show dbs

show databases

Son olarak, MongoDB’deki kullanıcıları göstermek ve listelemek için aşağıdaki sorguyu çalıştırın.

db.system.users.find()

Bunun gibi bir çıktı almalısınız – ‘myTestUser’ kullanımı MongoDB sunucusundan kaldırılır/silinir.

show users

 

Yazının orijinalini buradan okuyabilirsiniz.