MongoDB Kurulumu: Ubuntu 22.04 ve Temel Kullanım
Ubuntu 22.04'te MongoDB resmi repo ile kurulum, kimlik doğrulamayı aktifleştirme, kullanıcı oluşturma ve temel CRUD işlemleri.
MongoDB Nedir?
MongoDB, JSON benzeri BSON (Binary JSON) formatında belgeleri saklayan, şemasız ve yatay olarak ölçeklenebilir bir NoSQL veritabanıdır. İlişkisel veritabanlarından farklı olarak sabit tablo yapısı gerektirmez; her belge farklı alanlara sahip olabilir. Bu esneklik, hızlı prototipleme, yarı yapısal veri saklama ve mikro servis mimarileri için idealdir.
MongoDB'nin öne çıkan özellikleri: doküman tabanlı veri modeli, güçlü sorgulama dili, aggregation pipeline, geospatial indexing, full-text arama ve replica set ile high availability. Node.js, Python, PHP, Java gibi popüler programlama dilleri için resmi driver'ları mevcuttur.
Ubuntu 22.04'te MongoDB Kurulumu
MongoDB 7.0 Resmi Deposu
sudo apt install gnupg curl -y
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt update
sudo apt install -y mongodb-org
MongoDB Başlatma
sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod
MongoDB'ye Bağlanma
mongosh
Kimlik Doğrulamayı Aktifleştirme
Üretim ortamında MongoDB kimlik doğrulaması mutlaka etkinleştirilmelidir:
mongosh
use admin
db.createUser({
user: "admin",
pwd: "GucluMongoDB2024!",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
})
Yapılandırma Dosyasında Auth Aktifleştirme
sudo nano /etc/mongod.conf
security:
authorization: enabled
net:
port: 27017
bindIp: 127.0.0.1 # Uzak erişim için: 0.0.0.0
sudo systemctl restart mongod
Kimlik Doğrulamalı Bağlantı
mongosh --username admin --password --authenticationDatabase admin
Uygulama Veritabanı ve Kullanıcı Oluşturma
use myapp_db
db.createUser({
user: "myapp_user",
pwd: "AppMongo2024!",
roles: [{ role: "readWrite", db: "myapp_db" }]
})
Temel CRUD İşlemleri
Belge Ekleme (Create)
use myapp_db
// Tek belge
db.users.insertOne({
name: "Ahmet Yılmaz",
email: "ahmet@example.com",
age: 30,
createdAt: new Date()
})
// Çoklu belge
db.users.insertMany([
{ name: "Mehmet Demir", email: "mehmet@example.com", age: 25 },
{ name: "Ayşe Kaya", email: "ayse@example.com", age: 28 }
])
Belge Okuma (Read)
// Tüm belgeler
db.users.find()
// Filtreyle arama
db.users.find({ age: { $gt: 25 } })
// İlk belge
db.users.findOne({ email: "ahmet@example.com" })
// Projeksiyon (sadece isim ve email)
db.users.find({}, { name: 1, email: 1, _id: 0 })
// Sıralama ve limit
db.users.find().sort({ age: -1 }).limit(10)
Belge Güncelleme (Update)
// Tek güncelleme
db.users.updateOne(
{ email: "ahmet@example.com" },
{ $set: { age: 31, updatedAt: new Date() } }
)
// Tüm eşleşenleri güncelle
db.users.updateMany(
{ age: { $lt: 25 } },
{ $set: { status: "young" } }
)
Belge Silme (Delete)
db.users.deleteOne({ email: "test@example.com" })
db.users.deleteMany({ status: "inactive" })
Index Oluşturma
// Email alanı üzerinde unique index
db.users.createIndex({ email: 1 }, { unique: true })
// Bileşik index
db.users.createIndex({ name: 1, age: -1 })
// Mevcut indexleri listele
db.users.getIndexes()
Aggregation Pipeline
db.users.aggregate([
{ $match: { age: { $gte: 25 } } },
{ $group: { _id: null, avgAge: { $avg: "$age" }, count: { $sum: 1 } } },
{ $project: { _id: 0, avgAge: 1, count: 1 } }
])
MongoDB Compass Kurulumu
MongoDB Compass, MongoDB için grafik arayüzlü yönetim aracıdır. Yerel makinenizde çalışır:
wget https://downloads.mongodb.com/compass/mongodb-compass_1.42.0_amd64.deb
sudo dpkg -i mongodb-compass_1.42.0_amd64.deb
Yedekleme ve Geri Yükleme
# Yedekleme
mongodump --authenticationDatabase admin -u admin -p --out /backup/mongo_$(date +%Y%m%d)
# Geri yükleme
mongorestore --authenticationDatabase admin -u admin -p /backup/mongo_20240101/
Sık Karşılaşılan Sorunlar
mongod Başlamıyor
sudo journalctl -u mongod -n 50
sudo cat /var/log/mongodb/mongod.log | tail -30
# Data dizini izin sorunu:
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chmod 755 /var/lib/mongodb
Sonuç
MongoDB 7.0'ı Ubuntu 22.04'e başarıyla kurdunuz ve temel CRUD işlemlerini, index yönetimini ve güvenlik yapılandırmasını öğrendiniz. MongoDB'nin esnek veri modeli ve güçlü sorgulama yetenekleri, özellikle Node.js ile geliştirilen MERN/MEAN stack uygulamalar için mükemmel bir seçimdir.
Yorumlar
Henüz yorum yok. İlk yorumu siz yapın!