Node.js ile Mongoose Kullanımı

 bcakir
 4 Mayıs 2014

Büyük veri çözümleri hakkında bir önceki büyük veri ve kullanım alanları yazımızda bilgi vermiştim. Bu yazımızda ise büyük veri çözümlerinden MongoDB kullanımını Mongoose (MongoDB üzerinde çalışan şema bazlı bir ODM “Object Document Mapper” yapısı) ile birlikte işleyeceğiz, yani bu yazımızın konusu Node.js ile Mongoose kullanımı. Node.js ile en  kolay kullanılan veri tabanının MongoDB olduğu söyleniyor. Hatta internette örneklere baktığınızda neredeyse tamamına yakınınında MongoDB kullanıldığını fark edeceksiniz. Bu artı sayesinde konu hakkında karşılaşabileceğiniz sorunlara çözüm bulmanızın yanında kendinizi geliştirip yeni bilgiler edinebileceğiniz de bir çok kaynak bulunuyor. İlk önce MongoDB kurulumunu gerçekleştirip ardından Mongoose modülünü Node.js npm paket yöneticisiyle kurduktan sonra örneğimizi geliştirebiliriz. Bu arada, MongoDB için arayüz sunan Robomongo programını isterseniz kolayca veritabanını yönetmek için kurabilirsiniz.

//MongoDB balantısı
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/yazilarDb');

//Döküman (tablo) şeması
var Schema = mongoose.Schema; 
var yazilarSemasi = new Schema({
    baslik: String,
    icerik: String,
    onay  : Number,
    konu  : Number
}); 

//Şemayı oluşturma
var yazilar = mongoose.model('yazilar', yazilarSemasi);
var yazi = new yazilar();

//Eklenecek kayıt bilgileri
yazi.baslik = 'Node.js ile MongoDB';
yazi.icerik = 'Yazimizin konusu mongoose modülüdür...';
yazi.onay   = 1;
yazi.konu   = Math.floor((Math.random() * 10) + 1)
yazi.save(); //Dökümana kaydı ekleme

//Konusu 7'den büyük olan kayıtları silme
yazilar.update(
   {konu: { $gt: 7 }},
   {$set: { baslik: "yeni başlık" }},
   {multi: true}
).exec();

//Konusu 6 olan kayıtları silme
yazilar.remove({ konu: 6 }).exec();

//Eklenmiş olan kayıtları gösterme
yazilar.find(function(err, rows){
    if (err) //Hata mesajı
        console.log(err);
    else{ //Kayıtları listeleme
        for (var i = 0; i < rows.length; i++){
            console.log(rows[i].baslik);
            console.log(rows[i].icerik);
            console.log(rows[i].onay);
            console.log(rows[i].konu);
            console.log("-------"); //İçerikleri ayırmak için
        }
    }
});

Yukarıda bir MongoDb ODM’si olan Moongose modülünün veritabanı açma, yeni kayıt ekleme, güncelleme, silme gibi bazı temel kullanımlarını gördük. Bir sonraki yazımızda daha önce yaptığımız Facebook haber akışının MongoDB versiyonunu geliştireceğiz.

 587 Okunma

Bu yazıya 3 yorum yapılmış.

  1. Merhaba MongoDb de Group By ve Join gibi ifadeleri yada benzer yapıda olanları kullanabilir miyiz? Bu konu hakkında yazı yazarsanız gerçekten çok sevinirim.

    • MangoDB bir NoSQL çözümü olduğu için işleyiş tarzı RDBMS (ilişkisel veritabanları) gibi değildir. Saklanan veriler Denormalize (ilişkili veriler bir dökümanın altında birleşik olarak saklanır – embedded documents and linking) olarak bulunduğu için veriler faklı tablolara (dökümanlara) bölünmez. Bundan dolayı, Group By benzeri bir kullanım bulunmasına karşılık Join koşulu bulunmaz. Bu tarz ihtiyaçlara getirmiş olduğu kendi çözümleri vardır. Bu konularda zaman bulduğumda yazma niyetim var ama senin araştırıp öğrenebilmene yardımcı olmak için aşağıdaki bağlantıları inceleyebilirsin.
      SQL cülelerinin MogoDB karşılığı
      MogoDB group by kullanımı
      SQL Join / MongoDB embedded documents and linking

  2. Değerli bilgileriniz için teşekkür ederim teknoloji ile ilgili güncel haberleriniz çok güzel. Takipteyim.

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Daha fazla Node.js, NoSQL
Kapat