Giriş
Mongoose, MongoDB veritabanından veri çekme işlemlerini kolaylaştıran güçlü sorgulama kapasitelerine sahiptir. Bu makale, Mongoose kullanarak veritabanından veri çekme tekniklerini, sorgulama metodlarını ve en iyi uygulamaları detaylıca ele alacaktır.
Mongoose Sorgulama Temelleri
Mongoose, MongoDB dokümanlarına erişim için basit ve etkili sorgulama yöntemleri sunar.
Find Metodu
En yaygın kullanılan sorgulama metodu find
'dır. find
, belirli kriterlere uyan tüm dokümanları döndürür.
const User = mongoose.model('User', userSchema);
User.find({ age: { $gte: 18 } }, (err, users) => {
if (err) throw err;
console.log(users);
});
FindOne ve FindById
Tek bir doküman döndürmek için findOne
veya findById
metodları kullanılır.
User.findOne({ name: 'Ahmet' }, (err, user) => {
if (err) throw err;
console.log(user);
});
User.findById('5f50c31f1234567890123456', (err, user) => {
if (err) throw err;
console.log(user);
});
Gelişmiş Sorgulama Teknikleri
Sorgu Parametreleri
Mongoose, sorgu sonuçlarını filtrelemek, sıralamak ve limitlemek için çeşitli parametreler sunar.
Filtreleme
Filtreleme, belirli kriterlere göre sonuçları daraltmanızı sağlar.
User.find({ age: { $gte: 18, $lte: 30 } }, (err, users) => {
// 18 ile 30 yaş arası kullanıcılar
});
Sıralama
Sıralama, sonuçları belirli bir sıraya göre düzenler.
User.find().sort({ name: 1 }).exec((err, users) => {
// İsme göre sıralı kullanıcılar
});
Limit ve Skip
Limit ve skip, sonuçları sayfalandırmak için kullanılır.
User.find().skip(10).limit(5).exec((err, users) => {
// 11. ile 15. kullanıcılar arası sonuçlar
});
Aggregate Sorguları
Aggregate sorguları, veriler üzerinde karmaşık işlemler yapmanızı sağlar.
User.aggregate([
{ $match: { age: { $gte: 18 } } },
{ $group: { _id: '$age', total: { $sum: 1 } } }
]).exec((err, result) => {
// Yaşa göre gruplanmış kullanıcı sayıları
});
İyi Uygulamalar ve Performans İpuçları
Sorgu Optimizasyonu
Performansı optimize etmek için, yalnızca ihtiyacınız olan alanları seçin ve gereksiz sorgulardan kaçının.
User.find({ age: { $gte: 18 } }, 'name age').exec((err, users) => {
// Yalnızca isim ve yaş alanları
});
Endeks Kullanımı
Sık kullanılan sorgu alanlarında endeks oluşturarak sorgu performansını artırabilirsiniz.
userSchema.index({ name: 1 });
Populate ile İlişkilendirme
populate
metodu, ilişkili koleksiyonlar arasında sorgular yapmanızı sağlar.
Post.find().populate('author').exec((err, posts) => {
// Yazar bilgisi ile birlikte postlar
});
Sonuç
Mongoose, MongoDB ile çalışırken güçlü ve esnek sorgulama seçenekleri sunar. Bu makalede, Mongoose sorgulama metodları, gelişmiş teknikler, performans ipuçları ve en iyi uygulamalar üzerinde durduk. Bu bilgilerle, veritabanı sorgularınızı daha etkin ve verimli bir şekilde gerçekleştirebilirsiniz.