﻿
{"id":9049,"date":"2018-08-13T08:09:21","date_gmt":"2018-08-13T08:09:21","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=9049"},"modified":"2018-08-13T08:10:03","modified_gmt":"2018-08-13T08:10:03","slug":"node-js-mongodb-crud-islemleri","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/node-js-mongodb-crud-islemleri\/","title":{"rendered":"Node.js &#8211; MongoDB CRUD \u0130\u015flemleri"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde Node.js ortam\u0131nda MongoDB&#8217;ye CRUD i\u015flemlerinin nas\u0131l yap\u0131ld\u0131\u011f\u0131n\u0131 ele alaca\u011f\u0131z. \u0130lk olarak bir adet Node.js projesi <a href=\"http:\/\/www.gencayyildiz.com\/blog\/express-application-generator-nedir-nasil-kullanilir\/\" rel=\"noopener\" target=\"_blank\">in\u015fa<\/a> ediyoruz ve ard\u0131ndan projeye gerekli paketleri(express, mongoose vs.) entegre ediyoruz.<\/p>\n<p>\u0130\u00e7eri\u011fimizde yapaca\u011f\u0131m\u0131z t\u00fcm \u00f6rneklendirmeleri a\u015fa\u011f\u0131daki uygulama \u00e7er\u00e7evesinde ele alaca\u011f\u0131z.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst mongoose = require(&quot;mongoose&quot;);\r\nconst express = require(&quot;express&quot;);\r\nconst app = express();\r\n\r\nmongoose.connect(&quot;mongodb:\/\/localhost\/companydb&quot;)\r\n    .then(() =&gt; console.log(&quot;Veritaban\u0131 ba\u011flant\u0131s\u0131 ba\u015far\u0131yla sa\u011flanm\u0131\u015ft\u0131r...&quot;))\r\n    .catch(error =&gt; console.log(&quot;Veritaban\u0131 ba\u011flant\u0131s\u0131 sa\u011flan\u0131rken beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;, error.message));\r\n\r\nconst employeeRoter = require(&quot;.\/routes\/employeeRouter&quot;);\r\napp.use(&quot;\/employee\/&quot;, employeeRoter);\r\n\r\napp.listen(5000, () =&gt; console.log(&quot;Yay\u0131n ba\u015flad\u0131...&quot;));\r\n<\/pre>\n<p>Ve ayriyetten makale boyunca kullanaca\u011f\u0131m\u0131z mod\u00fcl\u00fcm\u00fcz a\u015fa\u011f\u0131daki olacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst mongoose = require(&quot;mongoose&quot;);\r\n\r\nmodule.exports = mongoose.model(&quot;Employees&quot;, new mongoose.Schem a({\r\n    _id: Number,\r\n    userName: String,\r\n    name: String,\r\n    surName: String,\r\n    age: Number\r\n}));\r\n<\/pre>\n<h3>Kay\u0131t Ekleme<\/h3>\n<p>MongoDB&#8217;ye veri eklemeyi \u00f6nceki <a href=\"http:\/\/www.gencayyildiz.com\/blog\/node-js-mongodbye-mongoose-ile-sema-olusturma-ve-kayit-ekleme\/\" rel=\"noopener\" target=\"_blank\">Node.js \u2013 MongoDB\u2019ye Mongoose \u0130le \u015eema Olu\u015fturma ve Kay\u0131t Ekleme<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131m\u0131zda incelemi\u015ftik.<\/p>\n<p>Tekrardan de\u011finmemiz gerekirse e\u011fer;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/addEmployee&quot;, (request, response, next) =&gt; {\r\n    let employee = new model({\r\n        _id: 3,\r\n        userName: &quot;abc&quot;,\r\n        name: &quot;X&quot;,\r\n        surName: &quot;Y&quot;,\r\n        age: 35\r\n    });\r\n\r\n    employee.save((error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        } else {\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\n\r\nmodule.exports = router;\r\n<\/pre>\n<p>g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere &#8220;save&#8221; fonksiyonu ile veritaban\u0131na ilgili documenti kaydedebilmekteyiz.<\/p>\n<h3>Sorgu Olu\u015fturmak(Find)<\/h3>\n<p>Veritaban\u0131ndaki herhangi bir collectiondaki verilerin t\u00fcm\u00fcn\u00fc ya da \u015farta ba\u011fl\u0131 bir k\u0131sm\u0131n\u0131 elde etmek i\u00e7in &#8220;find&#8221;, &#8220;findOne&#8221; ya da &#8220;findById&#8221; fonksiyonlar\u0131n\u0131 a\u015fa\u011f\u0131daki durumlarda kullanabiliriz.<\/p>\n<ul>\n<li>\n<strong>T\u00fcm Kay\u0131tlar\u0131 \u00c7ekmek<\/strong><\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/getEmployeeList&quot;, (request, response, next) =&gt; {\r\n    model.find({}, (error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        }\r\n        else {\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\n\r\nmodule.exports = router;\r\n<\/pre>\n<p>&#8220;find&#8221; fonksiyonu ile veritaban\u0131ndaki t\u00fcm kay\u0131tlar\u0131 bu \u015fekilde elde edebilmekteyiz. Dikkat edilmesi gereken husus, ilgili fonksiyonun ilk parametresine &#8220;{ }&#8221; de\u011ferinin verilmesidir. Bu \u015fekilde \u015farta ba\u011fl\u0131 kalmaks\u0131z\u0131n veritaban\u0131ndaki t\u00fcm kay\u0131tlar belirtilmi\u015f bulunmaktad\u0131r.\n<\/li>\n<li>\n<strong>\u015eartl\u0131 Sorgu Olu\u015fturmak<\/strong><br \/>\nBelirli kriterlere uygun verileri getirmek i\u00e7in &#8220;find&#8221; fonksiyonunu a\u015fa\u011f\u0131daki gibi kullanabiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/getEmployee&quot;, (request, response, next) =&gt; {\r\n    model.find({ name: &quot;Gen\u00e7ay&quot; }, (error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        }\r\n        else {\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\nmodule.exports = router;\r\n<\/pre>\n<p>Dikkat ederseniz &#8220;find&#8221; fonksiyonunun ilk parametresine &#8220;{ name: &#8220;Gen\u00e7ay&#8221; }&#8221; de\u011ferini belirtmi\u015f bulunmaktay\u0131z. Bu de\u011fer, collectiondaki &#8220;name&#8221; kolonu &#8220;Gen\u00e7ay&#8221; olan t\u00fcm documentleri getir manas\u0131na gelmektedir.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri.png\" alt=\"Node.js - MongoDB CRUD \u0130\u015flemleri\" width=\"523\" height=\"341\" class=\"aligncenter size-full wp-image-9060\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri.png 523w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-300x196.png 300w\" sizes=\"auto, (max-width: 523px) 100vw, 523px\" \/><\/a><br \/>\nBenzer mant\u0131kla \u015fartlar\u0131 \u00e7o\u011faltabilir ve a\u015fa\u011f\u0131daki gibi birden fazla kolon i\u00e7in kriter belirleyebiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/getEmployee&quot;, (request, response, next) =&gt; {\r\n    model.find({ name: &quot;Gen\u00e7ay&quot;, surName: &quot;Y\u0131ld\u0131z&quot;, userName: &quot;gncy&quot; }, (error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        }\r\n        else {\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\nmodule.exports = router;\r\n<\/pre>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-1.png\" alt=\"Node.js - MongoDB CRUD \u0130\u015flemleri\" width=\"525\" height=\"230\" class=\"aligncenter size-full wp-image-9062\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-1.png 525w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-1-300x131.png 300w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/a><\/p>\n<p>Ayr\u0131ca sorgu sonucu listelemek istenilen kolonlarda a\u015fa\u011f\u0131daki gibi ayarlanabilmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/getEmployee&quot;, (request, response, next) =&gt; {\r\n    model.find({ name: &quot;Gen\u00e7ay&quot; }, &quot;name&quot;, (error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        }\r\n        else {\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\nmodule.exports = router;\r\n<\/pre>\n<p>&#8220;find&#8221; fonksiyonunun ikinci parametresine bakarsan\u0131z e\u011fer string olarak belirtilen &#8220;name&#8221; ifadesi bu sorgulama sonucunda e\u015fle\u015fen kay\u0131tlar\u0131n sadece &#8220;name&#8221; kolonlar\u0131n\u0131n listelenmesini ifade etmektedir.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-3.png\" alt=\"Node.js - MongoDB CRUD \u0130\u015flemleri\" width=\"523\" height=\"198\" class=\"aligncenter size-full wp-image-9067\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-3.png 523w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-3-300x114.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-3-1320x500.png 1320w\" sizes=\"auto, (max-width: 523px) 100vw, 523px\" \/><\/a><\/p>\n<p>Birden fazla kolon listelemek istenirse e\u011fer;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/getEmployee&quot;, (request, response, next) =&gt; {\r\n    model.find({ name: &quot;Gen\u00e7ay&quot; }, &quot;name surName&quot;, (error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        }\r\n        else {\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\nmodule.exports = router;\r\n<\/pre>\n<p>\u015feklinde kolon isimlerinin yanyana yaz\u0131lmas\u0131 yeterlidir.<\/p>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-2.png\" alt=\"Node.js - MongoDB CRUD \u0130\u015flemleri\" width=\"528\" height=\"238\" class=\"aligncenter size-full wp-image-9065\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-2.png 528w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-2-300x135.png 300w\" sizes=\"auto, (max-width: 528px) 100vw, 528px\" \/><\/a>\n<\/li>\n<li>\n<strong>Tekil Sorgu Olu\u015fturmak(findOne)<\/strong><br \/>\nE\u011fer ki veritaban\u0131nda aranan tek bir veri ise o veriye \u00f6zel &#8220;findOne&#8221; fonksiyonu ile tekil sorgu olu\u015fturulabilir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/getSingleEmployee&quot;, (request, response, next) =&gt; {\r\n    model.findOne({ name: &quot;Gen\u00e7ay&quot; }, &quot;name surName&quot;, (error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        }\r\n        else {\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\nmodule.exports = router;\r\n<\/pre>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-4.png\" alt=\"Node.js - MongoDB CRUD \u0130\u015flemleri\" width=\"561\" height=\"159\" class=\"aligncenter size-full wp-image-9072\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-4.png 561w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-4-300x85.png 300w\" sizes=\"auto, (max-width: 561px) 100vw, 561px\" \/><\/a><\/p>\n<p>&#8220;findOne&#8221; fonksiyonunun &#8220;find&#8221; fonksiyonundan fark\u0131; &#8220;find&#8221; fonksiyonu collection i\u00e7erisindeki t\u00fcm kay\u0131tlar\u0131n \u015farta e\u015fitlik durumunu incelerken, &#8220;findOne&#8221; fonksiyonu ise ilk buldu\u011fu kayd\u0131 getirecek ve di\u011fer verilerin e\u015fitlik durumunu incelemeyecektir.\n<\/li>\n<li>\n<strong>ID Bazl\u0131 Arama(findById)<\/strong><br \/>\nVeriler \u00fczerinde id bazl\u0131 arama yapabilmek i\u00e7inde &#8220;findById&#8221; fonksiyonunu kullanabilmekteyiz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/getByIdEmployee&quot;, (request, response, next) =&gt; {\r\n    model.findById(&quot;1&quot;, &quot;name surName&quot;, (error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        }\r\n        else {\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\nmodule.exports = router;\r\n<\/pre>\n<p>Direkt olarak parametreye verilen id de\u011ferine sahip olan veri elde edilecektir.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-5.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-5.png\" alt=\"Node.js - MongoDB CRUD \u0130\u015flemleri\" width=\"557\" height=\"155\" class=\"aligncenter size-full wp-image-9075\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-5.png 557w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-5-300x83.png 300w\" sizes=\"auto, (max-width: 557px) 100vw, 557px\" \/><\/a>\n<\/li>\n<\/ul>\n<h3>Veri G\u00fcncelleme<\/h3>\n<p>Veri g\u00fcncellemek i\u00e7in &#8220;update&#8221; fonksiyonu kullan\u0131lmaktad\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/updateEmployee&quot;, (request, response, next) =&gt; {\r\n    model.update({ name: &quot;Gen\u00e7ay&quot; }, { surName: &quot;Y\u0131ld\u0131z (Yeni)&quot; }, (error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        }\r\n        else {\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\nmodule.exports = router;\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer; &#8220;name&#8221; kolonu &#8220;Gen\u00e7ay&#8221; olan verinin &#8220;surName&#8221; kolonunu &#8220;Y\u0131ld\u0131z (Yeni)&#8221; yap! demekteyiz. Burada dikkat ederseniz \u015farta uyan t\u00fcm veriler i\u00e7in \u00e7o\u011ful de\u011fil, tekil bir tarifte bulunmu\u015f bulunmaktay\u0131m. Bunun sebebi, &#8220;update&#8221; fonksiyonu bu \u015fekilde kullan\u0131ld\u0131\u011f\u0131nda sadece \u015farta uyan ilk veride ilgili i\u015flemi uygulamaktad\u0131r.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-6.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-6.png\" alt=\"Node.js - MongoDB CRUD \u0130\u015flemleri\" width=\"260\" height=\"227\" class=\"aligncenter size-full wp-image-9081\" \/><\/a><\/p>\n<p>E\u011fer ki \u015farta uyan t\u00fcm verilerde update i\u015flemini uygulamak istiyorsan\u0131z sorguya &#8220;multi : true&#8221; de\u011ferini a\u015fa\u011f\u0131daki gibi belirtmeniz gerekmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/updateEmployee&quot;, (request, response, next) =&gt; {\r\n    model.update({ name: &quot;Gen\u00e7ay&quot; }, { surName: &quot;Y\u0131ld\u0131z (Yeni)&quot; }, { multi: true }, (error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        }\r\n        else {\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\nmodule.exports = router;\r\n<\/pre>\n<p>Bu \u015fekilde g\u00fcncelleme i\u015flemi yapt\u0131\u011f\u0131m\u0131z taktirde \u015farta uyan t\u00fcm veriler etkilenecektir.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-7.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDB-CRUD-\u0130\u015flemleri-7.png\" alt=\"Node.js - MongoDB CRUD \u0130\u015flemleri\" width=\"258\" height=\"217\" class=\"aligncenter size-full wp-image-9083\" \/><\/a><\/p>\n<p><strong>Upsert Anahtar Kelimesi<\/strong><br \/>\nYapaca\u011f\u0131m\u0131z g\u00fcncelleme i\u015flemlerinde e\u011fer ki \u015farta uygun veri varsa ilgili i\u015flemi icra edebiliriz. Ya yoksa! ve b\u00f6yle bir durumda olmayan veriyi kaydetmek istiyorsak! Evet&#8230; Bu i\u015flemi kontrollerle sa\u011flayabiliriz lakin Upsert keyword\u00fc tam da bu ihtiyaca istinaden \u00fcretilmi\u015f bir i\u015flevselli\u011fe sahiptir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/updateEmployee&quot;, (request, response, next) =&gt; {\r\n    model.update({ name: &quot;Gen\u00e7ay&quot; }, { surName: &quot;Y\u0131ld\u0131z (Yeni)&quot; }, { upsert: true }, (error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        }\r\n        else {\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\nmodule.exports = router;\r\n<\/pre>\n<p>Burada; e\u011fer &#8220;name&#8221; kolunu &#8220;Gen\u00e7ay&#8221; olan veri <u>varsa<\/u> &#8220;surName&#8221; kolonunu &#8220;Y\u0131ld\u0131z (Yeni)&#8221; olarak g\u00fcncelle, yok e\u011fer <u>yoksa<\/u> &#8220;name&#8221; kolonu &#8220;Gen\u00e7ay&#8221; &#8220;surName&#8221; kolonuda &#8220;Y\u0131ld\u0131z (Yeni)&#8221; olan veriyi ekle demi\u015f bulunmaktay\u0131z.<\/p>\n<p><strong>ID Bazl\u0131 G\u00fcncelleme(findByIdAndUpdate)<\/strong><br \/>\nId bazl\u0131 g\u00fcncelleme i\u015flemi i\u00e7in;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/updateByIdEmployee&quot;, (request, response, next) =&gt; {\r\n    model.findByIdAndUpdate(&quot;1&quot;, { surName: &quot;Y\u0131ld\u0131z (Yeni)&quot; }, (error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        }\r\n        else {\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\nmodule.exports = router;\r\n<\/pre>\n<p>\u015feklinde \u00e7al\u0131\u015f\u0131labilir.<\/p>\n<h3>Veri Silme<\/h3>\n<p>\u00dc\u00e7 farkl\u0131 y\u00f6ntemle veri silebiliriz. Bunlar;<\/p>\n<ol>\n<li>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/deleteById&quot;, (request, response, next) =&gt; {\r\n    model.findById(&quot;1&quot;, (error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        }\r\n        else {\r\n            data.remove(error =&gt; console.log(&quot;Veri silinirken beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;));\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\nmodule.exports = router;\r\n<\/pre>\n<p>\u00d6nce &#8220;findById&#8221; fonksiyonuyla ilgili veri getirilir, ard\u0131ndan veri \u00fczerinden &#8220;remove&#8221; metodu ile veritaban\u0131ndan fiziksel olarak iligli veri silinir.\n<\/li>\n<li>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/delete&quot;, (request, response, next) =&gt; {\r\n    model.findOneAndRemove({ userName: &quot;gncy2&quot; }, (error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        }\r\n        else {\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\n\r\nmodule.exports = router;\r\n<\/pre>\n<p>&#8220;findOneAndRemove&#8221; fonksiyonu ile \u015farta uyan ilk eleman\u0131 silecektir.\n<\/li>\n<li>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/delete&quot;, (request, response, next) =&gt; {\r\n    model.remove({ userName: &quot;gncy2&quot; }, (error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        }\r\n        else {\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\n\r\nmodule.exports = router;\r\n<\/pre>\n<p>\u015earta uyan t\u00fcm verileri silecektir.\n<\/li>\n<\/ol>\n<h3>Modeldeki Alt Propertylere Eri\u015fmek<\/h3>\n<p>E\u011fer ki elimizdeki model a\u015fa\u011f\u0131daki gibi alt propertylerden olu\u015fuyorsa;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst mongoose = require(&quot;mongoose&quot;);\r\n\r\nmodule.exports = mongoose.model(&quot;Employees&quot;, new mongoose.Schem a({\r\n    _id: Number,\r\n    userName: String,\r\n    name: String,\r\n    surName: String,\r\n    age: Number,\r\n    country: {\r\n        city: String,\r\n        county: String,\r\n        adress: {\r\n            postcode: Number\r\n        }\r\n    }\r\n}));\r\n<\/pre>\n<p>bu propertylere eri\u015febilmek i\u00e7in a\u015fa\u011f\u0131daki gibi \u00e7al\u0131\u015fmak gerekmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst router = express.Router();\r\n\r\nconst model = require(&quot;..\/models\/employee&quot;);\r\n\r\nrouter.get(&quot;\/updateExample&quot;, (request, response, next) =&gt; {\r\n    model.update({ &quot;country.city&quot;: &quot;Ankara&quot; }, { &quot;country.adress.postcode&quot;: &quot;06130&quot; }, { upsert: true }, (error, data) =&gt; {\r\n        if (error) {\r\n            response.send(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131...&quot;);\r\n        }\r\n        else {\r\n            response.json(data);\r\n        }\r\n    });\r\n});\r\n\r\nmodule.exports = router;\r\n<\/pre>\n<p>\u0130lgililenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bu i\u00e7eri\u011fimizde Node.js ortam\u0131nda MongoDB&#8217;ye CRUD i\u015flemlerinin nas\u0131l yap\u0131ld\u0131\u011f\u0131n\u0131 ele alaca\u011f\u0131z. \u0130lk olarak bir adet Node.js projesi in\u015fa ediyoruz ve ard\u0131ndan projeye gerekli paketleri(express, mongoose vs.) entegre ediyoruz. \u0130\u00e7eri\u011fimizde yapaca\u011f\u0131m\u0131z t\u00fcm \u00f6rneklendirmeleri a\u015fa\u011f\u0131daki&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":8971,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2539,2145,2538],"tags":[2556,2559,2557,2558,2565,2561,2560,2562,2563,2564],"class_list":["post-9049","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mongodb","category-node-js","category-nosql","tag-mongodb-crud","tag-mongodb-find","tag-mongodb-insert","tag-mongodb-select","tag-mongodb-upsert","tag-node-js-crud","tag-node-js-find","tag-node-js-insert","tag-node-js-select","tag-node-js-upsert"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/9049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=9049"}],"version-history":[{"count":39,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/9049\/revisions"}],"predecessor-version":[{"id":9096,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/9049\/revisions\/9096"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/8971"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=9049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=9049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=9049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}