MongoDb Nedir? Php ile Nasıl Kullanılır

inamemrah
FLO Teknoloji
Published in
3 min readNov 29, 2022

MongoDB Nedir ?

MongoDB açık kaynak kodlu bir NoSQL veritabanıdır. MongoDB’de her kayıt bir doküman olarak ifade edilir. Ve bu dökümanlar json formatı şeklinde saklanır. Daha önce ilişkisel veritabanlarıyla ilgilenenlerin bildiği table yapısını burada collection, row yapısını document, column yapısını ise field alır. Bu veritabanı uygulaması ile NoSQL verilerini belge biçiminde saklayabilir ve ölçeklenebilir olması sayesinde kolayca analiz edebilirsiniz.

MongoDB’nin Faydaları

MongoDB oldukça faydalı bir yönetim aracıdır. MongoDB kullananlar, sistemin sağlamış olduğu avantajları araştırarak ve görerek sisteme giriş yapmaya başlarlar. Bu sayede ise istediklerine çok kısa bir süre içerisinde ulaşmış olurlar. Bu yönetim sisteminin sağlamış olduğu çok önemli 4 fayda bulunmaktadır. Bular sırası ile şöyledir;

  • Diğer muadillerine göre çok daha kolay bir kurulum özelliği sağlamaktadır.
  • Hiç bir şekilde şemaya gerek duymayan bir veri tabanı sistemine sahip olacaksınız.
  • Kullanım açısından çok faydalı ve yüksek performans aracıdır.
  • Genel olarak bilişim sektöründe maliyetler düşünüldüğünde, diğer araçlara göre oldukça uygun bir maliyeti olan veri tabanı yönetim sisteminin bütünüdür.

MongoDB’nin Özellikleri

  • Kullanımı tamamen ücretsiz bir veri tabanı türüdür.
  • Döküman odaklı çalışan bu sistem, muadilleri gibi standart bir veri formatına bağımlı olmadan çalıştığından sizler için kolaylık sağlar.
  • Çok daha fazla sorgulama esnekliğine sahip olduğu için bu sistemde, bir alana göre belli aralıklarla veya regular expression kullanılmak adına arama yapabilme fırsatı fazlasıyla sunulmaktadır. Böylece yapılmış olan aramalarda istenilen field’ların döndürülebilmesi olanağı daha rahat bir şekilde sağlanabilmektedir.
  • Load balancing, birçok MongoDb instance arasında yatay bir ölçekleme işlevi yapabildiği için herhangi bir donanımsal arıza tespit edildiğinde aktif olarak çalışan instance üzerinden çalışmaya devam eder.
  • Replikasyon imkânıyla birlikte birden fazla MongoDB instance oluşturmaya imkân sunarak, kullanıcısına yüksek kalitede kullanabilirlik fırsatı sunar.
  • Indexleme, database sistemlerinde performans açısından çok önemli sayılabilecek noktalardan biri olarak kabul edilir. Bu özelliği sayesinde kullanıcılar hızlı bir şekilde sorgu sonuçlarına varabilmektedir.
  • Orijinal olan tüm verilerin birden fazla kopyasını oluşturabilir. Bu sayede de veri kaybının önüne geçerek kullanılabilirliğini katlamaktadır.
  • Verilerin toplu bir şekilde işlenmesine olanak sağlar.
  • Güncel programlama dillerinin neredeyse bir çoğu için kolaylık olan driver destek imkânını sunar.

MongoDb Nerelerde kullanılır?

MongoDB genel olarak hızın önemli olduğu gerçek zamanlı uygulamalar, oyunlar, büyük verilerin olduğu uygulamalarda kullanılır.

MongoDb Dezavantajları

MongoDB performans olarak MySQL, Oracle ve SQL Server gibi veritabanlarından hızlı olsa da kuralları ve standardı olmadığından dolayı verilerin önemli olduğu uygulamalarda kullanılmaması veya kullanılırken dikkatli olunması gerekir.

MongoDB ile karmaşık sorguların hazırlanması SQL’e göre daha zor olabilir.

PHP MongoDB kullanımı

MongoDB kütüphanesi içinde veritabanı işlemleri yapabilmek için çeşitli sınıflar yer alıyor.

MongoDB işlemlerinde genellikle MongoDB\Driver içinde yer alan Manager, Query ve BulkWrite sınıfları kullanılır.

PHP MongoDB bağlantısı

PHP ile MongoDB bağlantısı kurmak için MongoDB\Driver\Manager veya MongoDB\Client sınıfı kullanılır. Burada MongoDb adından bir class oluşturup db connection işlemlerini bu class üzerinden yönettim.

class MongoDb
{

private $config;
private $connection;
private static $instance;


private function __construct() {
$this->config = Config::get('database.mongodb');

if($this->connection == null){
$server = $this->config['server'];
$port = $this->config['port'];
$dbName = $this->config['database'];
$userName = $this->config['user'];
$password = $this->config['password'];

$this->connection = (new \MongoDB\Client("mongodb://${userName}:${password}@${server}:${port}"))->$dbName;
}
}

public static function getInstance() {
if(!self::$instance) {
self::$instance = new self();
}
return self::$instance;
}

public function getConnection() {
return $this->connection;
}

public function from($table_name) {
return $this->connection->$table_name;
}
}

MongoDB Veri Ekleme

$collection = MongoDb::getInstance()->from('users');

$collection->insertOne([
'email' => "inamemrah@test.com.tr"
'name' => "Emrah",
'lastname' => "İnam",
'age' => "27",
]);

MongoDB Veri Güncelleme

$collection = MongoDb::getInstance()->from('users');

$collection->updateOne(
['email' => "inamemrah@test.com.tr"],
[
'$set' => [
'name' => "Emrah2"
]
]
);

MongoDB Veri Silme

Aşağıdaki sorgu users tablosundaki email alanı inamemrah@test.com.tr olan bütün kayıtları siler.

$collection = MongoDb::getInstance()->from('users');
$collection->deleteMany(['email' => "inamemrah@test.com.tr"]);

Aşağıdaki sorgu users tablosundaki email alanı inamemrah@test.com.tr olan ilk kaydı siler.

$collection = MongoDb::getInstance()->from('users');
$collection->deleteOne(['email' => "inamemrah@test.com.tr"]);

MongoDB Veri Çekme

findOne metodu ilk eşleşen kaydı getirir.

$result = $collection->findOne(["email" => "inamemrah@test.com.tr"]);

find metodu eşleşen tüm kayıtları getirir.

$result = $collection->find(["name" => "Emrah"]);

--

--