Node.js MongoDB Kullanımı

Node.js ile MongoDB kullanımı için gerekli olan modül kurulumu, veritabanı bağlantısı, veri ekleme, sorgulama, güncelleme ve silme ile ilgili bilgiler yer alıyor.

MongoDB kurulum

MongoDB Kurulumu ve MongoDB ile ilgili detaylı bilgi almak için MongoDB Dersleri bölümüne bakabilirsiniz.

Modül kurulumu

Node.js ile MongoDB kullanımı için mongodb modülü kullanılır.

Modül aşağıdaki komutlar kullanılarak indirilir.

npm install mongodb
veya
npm install mongodb --save

Modül proje dahil edilir.

const mongo = require('mongo');

Modül içinde MongoDB işlemleri için çeşitli nesne, metot ve özelliğe sahiptir.

MongoDB bağlantısı

MongoDB bağlantısı için modül içinde yer alan MongoClient nesnesi connect metodu kullanılır.

const MongoClient = require('mongodb').MongoClient;
const URL = 'mongodb://localhost:27017';

MongoClient.connect(URL, (err, client) => {
  if (err) throw err;
  console.log('MongoDB bağlantısı başarıyla gerçekleştirildi.');
  client.close();
});

Modül MongoDB bağlantısı için çeşitli bağlantı seçeneklerine imkan verir.

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

Veritabanı bağlantısı

MongoDB veritabanı bağlantısı için connect metoduna ait geri bildirim fonksiyonu kullanılır.

const MongoClient = require('mongodb').MongoClient;
const URL = 'mongodb://localhost:27017';

MongoClient.connect(URL, (err, client) => {
  if (err) throw err;

  const db = client.db('VT_ADI');
  console.log('MongoDB veritabanı bağlantısı başarıyla gerçekleştirildi.');
  client.close();

});

Bağlantı geri dönüş değeri olarak MongoDB işlemlerinde kullanılacak metotların olduğu nesneyi döndürür.

Koleksiyon oluşturma

Koleksiyon oluşturmak için createCollection metodu kullanılır.

const MongoClient = require('mongodb').MongoClient;
const URL = 'mongodb://localhost:27017';

MongoClient.connect(URL, (err, client) => {
  if (err) throw err;

  const db = client.db('kisi');
  db.createCollection('kisiler', (err, result) => {
    if (err) throw err;
    console.log('Koleksiyon oluşturuldu.');
    client.close();
  });

});

NOT: Koleksiyon oluşturmak için sadece veri eklemek yeterlidir.

Veri ekleme

Veri eklemek için insertOne veya insertMany metodu kullanılır.

const MongoClient = require('mongodb').MongoClient;
const URL = 'mongodb://localhost:27017';

MongoClient.connect(URL, (err, client) => {
  if (err) throw err;

  const db = client.db('kisi');
  let veri = { adi: 'Yusuf', soyadi: 'SEZER' };
  db.collection('kisiler').insertOne(veri, (err, result) => {
    if (err) throw err;
    console.log('Başarılı bir şekilde eklendi.');
    client.close();
  });

});

Birden fazla veri eklemek için insertMany metodu kullanılır.

const MongoClient = require('mongodb').MongoClient;
const URL = 'mongodb://localhost:27017';

MongoClient.connect(URL, (err, client) => {
  if (err) throw err;

  const db = client.db('kisi');
  let veriler = [
    { adi: 'Yusuf', soyadi: 'SEZER' },
    { adi: 'Ramazan', soyadi: 'SEZER' },
    { adi: 'Sinan', soyadi: 'SEZER' },
    { adi: 'Mehmet', soyadi: 'SEZER' }
  ];
  db.collection('kisiler').insertMany(veriler, (err, result) => {
    if (err) throw err;
    console.log(result.insertedCount + ' kayıt eklendi.');
    client.close();
  });

});

NOT: İşlem sonucu ile ilgili bilgi almak için geri bildirim fonksiyonu kullanılır.

Sorgulama

Sorgulama ve veri çekmek için find veya findOne metodu kullanılır.

const MongoClient = require('mongodb').MongoClient;
const URL = 'mongodb://localhost:27017';

MongoClient.connect(URL, (err, client) => {
  if (err) throw err;

  const db = client.db('kisi');
  let sorgu = {};
  db.collection('kisiler').findOne(sorgu, (err, result) => {
    if (err) throw err;
    console.log(result);
    client.close();
  });

});

Alınan verilere nokta(.) operatörü ile erişilir.

console.log(result._id);

Birden fazla veri çekmek için find metodu kullanılır.

Metot sorgu ve sorgu ayarlarını nesne olarak alır.

const MongoClient = require('mongodb').MongoClient;
const URL = 'mongodb://localhost:27017';

MongoClient.connect(URL, (err, client) => {
  if (err) throw err;

  const db = client.db('kisi');
  let sorgu = {};
  db.collection('kisiler').find(sorgu, { projection: { _id: 0 } }).toArray((err, result) => {
    if (err) throw err;
    console.log(result);
    client.close();
  });

});

Alınan verileri sıralamak için sort metodu kullanılır.

const MongoClient = require('mongodb').MongoClient;
const URL = 'mongodb://localhost:27017';

MongoClient.connect(URL, (err, client) => {
  if (err) throw err;

  const db = client.db('kisi');
  let sorgu = {};
  db.collection('kisiler').find(sorgu).sort({ adi: -1 }).toArray((err, result) => {
    if (err) throw err;
    console.log(result);
    client.close();
  });

});

Sorgu sonucunda belirli verileri almak için limit ve skip metodu kullanılır.

const MongoClient = require('mongodb').MongoClient;
const URL = 'mongodb://localhost:27017';

MongoClient.connect(URL, (err, client) => {
  if (err) throw err;

  const db = client.db('kisi');
  let sorgu = {};
  db.collection('kisiler').find(sorgu).skip(2).limit(2).toArray((err, result) => {
    if (err) throw err;
    console.log(result);
    client.close();
  });

});

Detaylı bilgi için MongoDB Sorgulama yazısına bakabilirsiniz.

Veri güncelleme

Verileri güncellemek için updateOne veya updateMany metodu kullanılır.

const MongoClient = require('mongodb').MongoClient;
const URL = 'mongodb://localhost:27017';

MongoClient.connect(URL, (err, client) => {
  if (err) throw err;

  const db = client.db('kisi');
  let sorgu = { adi: 'Yusuf Sefa' };
  let yeniDeger = { $set: { adi: 'Yusuf', soyadi: 'SEZER' } };
  db.collection('kisiler').updateOne(sorgu, yeniDeger, (err, result) => {
    if (err) throw err;
    console.log('Başarılı bir şekilde güncellendi.');
    client.close();
  });

});

Metot sorgu ve verinin yeni değerini alır.

Veri güncellemesi yapmak için $set anahtar kelimesi kullanılır.

Anahtar kelime kullanılmadığında eşleşen verinin yeni içeriği yeni değer olacaktır.

Birden fazla veri güncellemek için updateMany metodu kullanılır.

const MongoClient = require('mongodb').MongoClient;
const URL = 'mongodb://localhost:27017';

MongoClient.connect(URL, (err, client) => {
  if (err) throw err;

  const db = client.db('kisi');
  let sorgu = {};
  let yeniDeger = { $set: { adi: 'Yusuf', soyadi: 'SEZER' } };
  db.collection('kisiler').updateMany(sorgu, yeniDeger, (err, result) => {
    if (err) throw err;
    console.log(result.modifiedCount + ' kayıt güncellendi.');
    client.close();
  });

});

Veri silme

Veri silmek için deleteOne veya deleteMany metodu kullanılır.

const MongoClient = require('mongodb').MongoClient;
const URL = 'mongodb://localhost:27017';

MongoClient.connect(URL, (err, client) => {
  if (err) throw err;

  const db = client.db('kisi');
  let sorgu = {};
  db.collection('kisiler').deleteOne(sorgu, (err, result) => {
    if (err) throw err;
    console.log('Başarılı bir şekilde silindi.');
    client.close();
  });

});

Birden fazla veri silmek için deleteMany metodu kullanılır.

const MongoClient = require('mongodb').MongoClient;
const URL = 'mongodb://localhost:27017';

MongoClient.connect(URL, (err, client) => {
  if (err) throw err;

  const db = client.db('kisi');
  let sorgu = { adi: 'Yusuf' };
  db.collection('kisiler').deleteMany(sorgu, (err, result) => {
    if (err) throw err;
    console.log(result.deletedCount + ' kayıt silindi.');
    client.close();
  });

});

Koleksiyon silme

Koleksiyon silmek için dropCollection metodu kullanılır.

const MongoClient = require('mongodb').MongoClient;
const URL = 'mongodb://localhost:27017';

MongoClient.connect(URL, (err, client) => {
  if (err) throw err;

  const db = client.db('kisi');
  db.dropCollection('kisiler', (err, result) => {
    if (err) throw err;
    if (result) console.log('Koleksiyon başarıyla silindi.');
    client.close();
  })

});

Koleksiyon silmek için ayrıca drop metodu da kullanılabilir.

Node.js Derslerine buradan ulaşabilirsiniz…

MongoDB Derslerine buradan ulaşabilirsiniz…

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!