Rehber MongoDB Başlangıç Snippetleri

  • Konuyu başlatan Konuyu başlatan Yonga
  • Başlangıç Tarihi Başlangıç Tarihi
  • Mesaj Mesaj 3
  • Görüntüleme Görüntüleme 223
  • Etiketler Etiketler
    başlangıç
Bu gönderi bilgisayar kullanmayı bilen, okuduğunu anlayan, tercihen JavaScript bilgisi olan web programcılarına yöneliktir.

MongoDB benim gözümde en iyi veritabanı sistemidir. Cross-platform, doküman bazlı NoSQL bir veritabanıdır. Girdiler JSON benzeri dokümanlarla tutulur. Ben büyük bir sosyal medya platformunu da MongoDB veritabanı kullanarak yarattım.

Buradan indir.


Windows'a kuruyorsan MongoDB Compass'ı da kur. Debian tabanlı bir GNU/Linux sisteme kuruyorsan APT'den mongodb-org paketini indireceksin zaten.

Compass şu oluyor. Local veya uzaktaki sunucuya bağlanabiliyorsun. Uzak sunucuya bağlanıyorsanız şifrelemeyi ve SSL kullanmayı unutmayın yoksa zortlarsınız. Ben yerelde Windows sunucularda Linux kullanıyorum. Aralarında doküman alışverişi de yapabiliyorlar zaten.



Bunların çok detayına girmeyeceğim sadece Express.JS altında mongodb paketini kullanarak nasıl utilize ediliğini göstereceğim küçük küçük snippetler ile. Mongoose diye paket de var, şema desteği falan var ama o bebekler için. Onun konusunu da başkası açsın.

[CODE lang="javascript" title="Bağlantı Kurmak"]const { MongoClient } = require('mongodb');

// Bağlantı URL'i. Buna kullanıcı adı şifre de yazıyorsun eğer sunucudaysan ama yani onun için de git doküman oku.
const url = 'mongodb://localhost:27017';
const client = new MongoClient(url);

// Veritabanı adı. Şu Compass ekran görüntüsünde soldaki şeyler ayrı ayrı veritabanları oluyor.
const dbName = 'myDatabase';

async function connect() {
try {
await client.connect();
console.log('Bağlandık knk.');
const db = client.db(dbName);
return db;
} catch (err) {
console.error(err);
}
}

connect();[/CODE]

Bağlantı bu şekilde kuruyoruz. Bunu ayrı bir modüle, onu da bir middleware'e bağlarsanız, her routeunuzda yani endpointinizde veritabanınıza erişebilirsiniz. En azından benim yoğurt yiyişim öyle. Sizin öyle değilse yorumlarda küfür edin

Bir doküman eklemek.
JavaScript:
const collection = db.collection('documents');
await collection.insertOne({ name: 'Recep', age: 37 });




Gördüğünüz gibi "myDatabase" isimli veritabanında "documents" isimli koleksiyona bir obje ekledim. Ekleyebildiğiniz tüm veri tiplerini şöyle göstereyim.


Birden fazla doküman eklemek.

JavaScript:
await collection.insertMany([{ name: 'Recep', age: 37 }, { name: 'Yonga', age: 23 }]);

Bir dokümanı bulmak ve döndürmek.

JavaScript:
const document = await collection.findOne({ name: 'Recep' });

document değişkeninin değeri:
JSON:
{
  _id: new ObjectId('66a754e4ed8c6e6be2403985'),
  name: 'Recep',
  age: 37
}

Birden fazla doküman bulmak.
JavaScript:
await collection.find({ age: { $gte: 25 } }).toArray();

gte operatörü Greater Than demek. Eğer bunun "büyükse" anlamına geldiğini benden şu an öğreniyorsanız mesleği bırakın ve İngilizce çalışmaya başlayın. 25 yaşından büyükleri döndürecek bu. findOne yerine find yapıyoruz ki birden fazla doküman arasın. Bir de .toArray() methodunu da kullanıyoruz ki arraye çevirsin. Diğer operatörler ve daha fazlası dokümanda yer alıyor. Bunlar sadece başlangıç snippetleri olacak.

Var olan dokümanı güncellemek.

JavaScript:
await collection.updateOne({ name: 'Recep' }, { $set: { age: 90 } });
Recep isimli dokümanı bulup age değerini 90 yaptı güncelledi yuppi

MongoDB dokümanları atomiktir. ☝ Yani hocam bu ne demek oluyor? İşlemler aynı anda da yapılsa, aynı doküman aynı anda da güncellense bunlar hem sıraya alınır hem de bir dokümanın farklı yerlerini güncelleyebilirsiniz. MongoDB motoru buna izin verir.

Birden fazla dokümanı aynı anda güncellemek.

JavaScript:
await collection.updateMany({ age: { $gte: 25 } }, { $set: { status: 'active' } });

Yaşı 25'den büyük olanlara status: active diye bir girdi ekledi.

Bir dokümandaki array'e yeni değer pushlamak. Burada hobbies bir array yani.

JavaScript:
await collection.updateOne({ name: 'Recep' }, { $push: { hobbies: 'reading' } });



Doküman silmek

JavaScript:
await collection.deleteOne({ name: 'Yonga' });

Birden fazla doküman silmek.

JavaScript:
await collection.deleteMany({ age: { $lt: 28 } });

Yaşı 28'den küçük olanları siliyor. lt = lower than.


Bilerek kısa tuttum. Yoksa daha indexler, aggregationlar, bulup değiştirmeler, bulup modifiye etmeler, toplu yazım işlemleri, sayım işlemleri ve daha niceleri var.
Tabii yeni başlayanlar için de değil bu post. Ama siz yine de sorularınız olursa çekinmeden sorun.

Öğrenmek istiyorum hocam:
 
Vallahi JS bilmiyorum ama rehbere uğraşmışsınız. O yüzden ellerinize sağlık <3
 
Buralar yazılım kokmuş
Elinize sağlık hocam bizim için yabancı dil niteliğinde rehber
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…