Bu yazıda, Node.js kullanarak MongoDB Atlas’a nasıl bağlanacağımızı ve temel CRUD (Create-Read-Update-Delete) işlemlerini nasıl yapacağımızı öğreneceğiz.
Gerekli Araçların Kurulumu
Bu aşamada, Node.js ve npm’in (Node Paket Yöneticisi) kurulu olduğunu varsayıyorum. Eğer kurulu değillerse, aşağıdaki yazılarımı okuyarak gerekli işlemleri tamamlayabilirsiniz.
Node.js Nedir? Node.js Kurulumu Nasıl Yapılır?
Npm Nedir? Npm ile Paket Kurulumu Nasıl Yapılır?
İlk olarak, projenize MongoDB’nin Node.js sürücüsünü eklemeniz gerekiyor. Terminal veya komut satırında, proje dosyanızın bulunduğu klasöre gidin ve aşağıdaki komutu çalıştırın:
1 2 3 |
npm install mongodb |
Bu komut ile MongoDB’nin Node.js sürücüsünü projenize eklemiş olacaksınız.
MongoDB Atlas’ta Veritabanı Oluşturma
MongoDB Atlas, MongoDB’nin bulut tabanlı veritabanı hizmetidir. Ücretsiz bir hesap oluşturabilir ve projenize bir MongoDB veritabanı ekleyebilirsiniz. İlk olarak, MongoDB Atlas web sitesine giderek bir hesap oluşturun ve oturum açın.
Oturum açtıktan sonra, yeni bir proje oluşturun ve bu projeye bir ‘cluster‘ ekleyin. Cluster, veritabanınızın depolandığı sunucu grubudur. Ücretsiz bir ‘cluster‘ oluşturabilirsiniz.
Cluster’ınızı oluşturduktan sonra, MongoDB bağlantı dizesini almak için ‘CONNECT‘ düğmesine tıklayın. Bu bağlantı dizesini, uygulamamızın MongoDB veritabanınıza bağlanması için kullanacağız.
Örnek bir bağlantı dizesi:
1 2 3 |
mongodb+srv://<username>:<password>@cluster0.mongodb.net/?retryWrites=true&w&majority' |
Node.js ile MongoDB Atlas’a Bağlanma
Artık MongoDB’nin Node.js sürücüsünü kullanarak MongoDB Atlas’taki veritabanınıza bağlanabilirsiniz. Aşağıdaki örnekte, MongoDB sürücüsünü import ettik ve MongoClient sınıfını kullanarak MongoDB Atlas’taki veritabanına bağlandık:
index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
const { MongoClient, ServerApiVersion } = require('mongodb'); const uri = 'mongodb+srv://<username>:<password>@cluster0.jjpwykv.mongodb.net/?retryWrites=true&w=majority'; const client = new MongoClient(uri, { serverApi: { version: ServerApiVersion.v1, strict: true, deprecationErrors: true, }, }); async function run() { try { await client.connect(); await client.db('admin').command({ ping: 1 }); console.log( 'Pinged your deployment. You successfully connected to MongoDB!' ); } finally { await client.close(); } } run().catch(console.dir); |
Yukarıdaki kodda, ‘<username>’ ve ‘<password>’ yerlerine MongoDB Atlas’ta veritabanı oluştururken kullandığınız kullanıcı bilgilerini yazmalısınız.
Konsolda şu komutu yazarak kodumuzu çalıştıralım.
1 2 3 |
node index.js |
Bağlantı başarıyla kurulduğunda, ‘Pinged your deployment. You successfully connected to MongoDB!’ mesajını konsolda göreceksiniz.
Node.js ile MongoDB Atlas’ta Collection Oluşturma
MongoDB’nin temel birimlerinden biri ‘collection‘lar. Bunlar, MongoDB’nin SQL veritabanlarındaki ‘tablo‘ların karşılığıdır. ‘Collection’lar, belge (document) denilen veri birimlerini içerir. Bu belgeler, JSON benzeri bir format olan BSON’da saklanır.
Bağlantımızı zaten oluşturduğumuz için, ‘collection‘ oluşturma işlemlerimize hızlıca geçebiliriz.
MongoDB’de, bir ‘collection’ oluşturmak için ‘db.collection()‘ işlevini kullanırız. Bu işlev, belirtilen isimde bir ‘collection‘ oluşturur. Eğer bu isimde bir ‘collection’ zaten varsa, mevcut ‘collection’ı döndürür.
Aşağıdaki örnek kodda, ‘mehsatek‘ adlı bir veritabanında ‘blog‘ adında bir ‘collection‘ oluşturuyoruz:
index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
const { MongoClient, ServerApiVersion } = require('mongodb'); const uri = 'mongodb+srv://<username>:<password>@cluster0.jjpwykv.mongodb.net/?retryWrites=true&w=majority'; const client = new MongoClient(uri, { serverApi: { version: ServerApiVersion.v1, strict: true, deprecationErrors: true, }, }); async function run() { try { await client.connect(); const database = client.db('mehsatek'); const collection = database.collection('blog'); console.log('Collection created!'); } finally { await client.close(); } } run().catch(console.dir); |
Bu kod parçacığı, belirtilen veritabanı ve ‘collection’ın oluşturulmasını sağlar.
Önemli bir not : MongoDB’de, bir ‘collection’ı veya veritabanını explicit olarak oluşturmanıza gerek yoktur. İlk belgeyi eklediğinizde, MongoDB otomatik olarak ilgili ‘collection’ı ve veritabanını oluşturur. Yani yukarıdaki kodu çalıştırdığınızda MongoDB’de bir ‘collection’ göremediğinizde şaşırmayın!
Eğer MongoDB Atlas’ta oluşturduğunuz ‘collection’ı görmek istiyorsanız, öncelikle bu ‘collection’a bir belge eklemeniz gerekiyor.
Node.js ile MongoDB Atlas’ta Collection’a Belge Ekleme
Bir collection’a belge eklemek için ‘insertOne()‘ veya ‘insertMany()‘ işlevlerini kullanabiliriz. ‘insertOne()’, bir belge eklerken ‘insertMany()’, birden çok belge eklemek için kullanılır.
Tek bir belge eklemek için:
index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
const { MongoClient, ServerApiVersion } = require('mongodb'); const uri = 'mongodb+srv://<username>:<password>@cluster0.jjpwykv.mongodb.net/?retryWrites=true&w=majority'; const client = new MongoClient(uri, { serverApi: { version: ServerApiVersion.v1, strict: true, deprecationErrors: true, }, }); async function run() { try { await client.connect(); const database = client.db('mehsatek'); const collection = database.collection('blog'); const doc = { title: 'Example', content: 'This is an example document.' }; const result = await collection.insertOne(doc); console.log(`A document was inserted with the _id: ${result.insertedId}`); } finally { await client.close(); } } run().catch(console.dir); |
Bu kod parçacığı, ‘blog‘ adındaki ‘collection’a bir belge ekler. Bu belge, ‘name‘ ve ‘content‘ adında iki alan içerir.
Bu belgeyi ekledikten sonra, MongoDB Atlas’ınızı yenileyin. ‘blog‘ adında bir ‘collection‘ın ‘mehsatek‘ adlı veritabanında oluştuğunu göreceksiniz. Belgenin kendisini görmek için, bu ‘collection‘ın içine tıklayın.
Birden çok belge eklemek için:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
const { MongoClient, ServerApiVersion } = require('mongodb'); const uri = 'mongodb+srv://<username>:<password>@cluster0.jjpwykv.mongodb.net/?retryWrites=true&w=majority'; const client = new MongoClient(uri, { serverApi: { version: ServerApiVersion.v1, strict: true, deprecationErrors: true, }, }); async function run() { try { await client.connect(); const database = client.db('mehsatek'); const collection = database.collection('blog'); const docs = [ { title: 'Hello, MongoDB', content: 'This is an example document.' }, { title: 'Using MongoDB Atlas', content: 'This is an example document.' }, ]; const result = await collection.insertMany(docs); console.log(`${result.insertedCount} documents were inserted.`); } finally { await client.close(); } } run().catch(console.dir); |
Node.js ile MongoDB Atlas’ta Collection’dan Belge Okuma
Belgeleri okumak için ‘findOne()‘ veya ‘find()‘ işlevlerini kullanabiliriz. ‘findOne()’, ilk eşleşen belgeyi döndürürken, ‘find()’ eşleşen tüm belgeleri bir cursor şeklinde döndürür. Bu cursor, ‘toArray()‘ işleviyle bir diziye çevrilebilir.
Bir belgeyi okumak için:
index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
const { MongoClient, ObjectId, ServerApiVersion } = require('mongodb'); const uri = 'mongodb+srv://<username>:<password>@cluster0.jjpwykv.mongodb.net/?retryWrites=true&w=majority'; const client = new MongoClient(uri, { serverApi: { version: ServerApiVersion.v1, strict: true, deprecationErrors: true, }, }); async function run() { try { await client.connect(); const database = client.db('mehsatek'); const collection = database.collection('blog'); const query = { _id: new ObjectId('64cb4cfca6d8cbbe20db8397') }; const doc = await collection.findOne(query); console.log(doc); } finally { await client.close(); } } run().catch(console.dir); |
Birden çok belgeyi okumak için:
index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
const { MongoClient, ObjectId, ServerApiVersion } = require('mongodb'); const uri = 'mongodb+srv://<username>:<password>@cluster0.jjpwykv.mongodb.net/?retryWrites=true&w=majority'; const client = new MongoClient(uri, { serverApi: { version: ServerApiVersion.v1, strict: true, deprecationErrors: true, }, }); async function run() { try { await client.connect(); const database = client.db('mehsatek'); const collection = database.collection('blog'); const query = { content: 'This is an example document.' }; const docs = await collection.find(query).toArray(); console.log(docs); } finally { await client.close(); } } run().catch(console.dir); |
Node.js ile MongoDB Atlas’ta Collection’da Belge Güncelleme
Belgeleri güncellemek için ‘updateOne()‘ veya ‘updateMany()‘ işlevlerini kullanabiliriz. ‘updateOne()’, ilk eşleşen belgeyi güncellerken ‘updateMany()’, eşleşen tüm belgeleri günceller.
Bir belgeyi güncellemek için:
index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
const { MongoClient, ObjectId, ServerApiVersion } = require('mongodb'); const uri = 'mongodb+srv://<username>:<password>@cluster0.jjpwykv.mongodb.net/?retryWrites=true&w=majority'; const client = new MongoClient(uri, { serverApi: { version: ServerApiVersion.v1, strict: true, deprecationErrors: true, }, }); async function run() { try { await client.connect(); const database = client.db('mehsatek'); const collection = database.collection('blog'); const query = { title: 'Hello, MongoDB' }; const update = { $set: { title: 'Hi, MongoDB' } }; const result = await collection.updateOne(query, update); console.log(`${result.modifiedCount} document(s) was/were updated.`); } finally { await client.close(); } } run().catch(console.dir); |
Birden çok belgeyi güncellemek için:
index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
const { MongoClient, ObjectId, ServerApiVersion } = require('mongodb'); const uri = 'mongodb+srv://<username>:<password>@cluster0.jjpwykv.mongodb.net/?retryWrites=true&w=majority'; const client = new MongoClient(uri, { serverApi: { version: ServerApiVersion.v1, strict: true, deprecationErrors: true, }, }); async function run() { try { await client.connect(); const database = client.db('mehsatek'); const collection = database.collection('blog'); const query = { content: 'This is an example document.' }; const update = { $set: { content: 'This is an example document-22222.' } }; const result = await collection.updateMany(query, update); console.log(`${result.modifiedCount} document(s) was/were updated.`); } finally { await client.close(); } } run().catch(console.dir); |
Node.js ile MongoDB Atlas’ta Collection’dan Belge Silme
Belgeleri silmek için ‘deleteOne()‘ veya ‘deleteMany()‘ işlevlerini kullanabiliriz. ‘deleteOne()’, ilk eşleşen belgeyi silerken ‘deleteMany()’, eşleşen tüm belgeleri siler.
Bir belgeyi silmek için:
index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
const { MongoClient, ObjectId, ServerApiVersion } = require('mongodb'); const uri = 'mongodb+srv://<username>:<password>@cluster0.jjpwykv.mongodb.net/?retryWrites=true&w=majority'; const client = new MongoClient(uri, { serverApi: { version: ServerApiVersion.v1, strict: true, deprecationErrors: true, }, }); async function run() { try { await client.connect(); const database = client.db('mehsatek'); const collection = database.collection('blog'); const query = { _id: new ObjectId('64c97ec05f75d03fcd8128e5') }; const result = await collection.deleteOne(query); console.log(`${result.deletedCount} document(s) was/were deleted.`); } finally { await client.close(); } } run().catch(console.dir); |
Birden çok belgeyi silmek için:
index.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
const { MongoClient, ObjectId, ServerApiVersion } = require('mongodb'); const uri = 'mongodb+srv://<username>:<password>@cluster0.jjpwykv.mongodb.net/?retryWrites=true&w=majority'; const client = new MongoClient(uri, { serverApi: { version: ServerApiVersion.v1, strict: true, deprecationErrors: true, }, }); async function run() { try { await client.connect(); const database = client.db('mehsatek'); const collection = database.collection('blog'); const query = { content: 'This is an example document-22222.' }; const result = await collection.deleteMany(query); console.log(`${result.deletedCount} document(s) was/were deleted.`); } finally { await client.close(); } } run().catch(console.dir); |
Sonuç olarak, Node.js kullanarak MongoDB Atlas’a bağlanma ve temel CRUD işlemlerini yapma konusunda geniş bir bakış açısı edindik.
Umarım ‘Node.js ile MongoDB Atlas’a Bağlanma ve CRUD İşlemleri‘ başlıklı yazım sizin için faydalı olmuştur.
Bir sonraki yazımda görüşmek üzere.
Happy coding!