├── LICENSE ├── README.md └── tutorial.mongodb /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022-present Mario Laurich 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MongoDB Tutorial 2 | 3 | MongoDB Tutorial Deutsch für Anfänger. Mit MongoDB als NoSQL Datenbank kannst du deine Daten direkt als Objekt im JSON Format persistieren und auch so wieder auslesen. Ich zeige dir was du alles brauchst und stelle dir alle wichtigen Befehle in der MongoDB Shell vor. Happy Coding! 4 | 5 | [Tutorial auf YouTube anschauen](https://youtu.be/jpTNn4zkMKY) 6 | 7 | [![Tutorial bei Youtube](http://img.youtube.com/vi/jpTNn4zkMKY/0.jpg)](https://youtu.be/jpTNn4zkMKY) 8 | 9 | ## Vernetze dich: 10 | 11 | [programmierenmitmario.de][website] 12 | [programmierenmitmario | YouTube][youtube] 13 | [programmierenmitmario | Twitter][twitter] 14 | [programmierenmitmario | Instagram][instagram] 15 |
16 |
17 | 18 | ## MongoDB Cheat Sheet 19 | 20 | ### Alle Datenbanken anzeigen 21 | 22 |
 23 | show dbs
 24 | 
25 | 26 | ### Aktualle Datenbank anzeigen 27 | 28 |
 29 | db
 30 | 
31 | 32 | ### Datenbank verwenden/anlegen 33 | 34 |
 35 | use tutorial
 36 | 
37 | 38 | ### Datenbank löschen 39 | 40 |
 41 | db.dropDatabase('tutorial')
 42 | 
43 | 44 | ## Collections 45 | 46 | ### Neue Collection anlegen 47 | 48 |
 49 | db.createCollection('products')
 50 | 
51 | 52 | ### Alle Collections anzeigen 53 | 54 |
 55 | show collections
 56 | 
57 | 58 | ### Collection löschen 59 | 60 |
 61 | db.products.drop()
 62 | 
63 | 64 | ## Documents anlegen 65 | 66 | ### Ein neues Document hinzufügen 67 | 68 |
 69 | db.products.insertOne(
 70 |   {
 71 |     name: "Banane",
 72 |     price: 0.99,
 73 |     category: 'Obst',
 74 |     views: 16
 75 |   }
 76 | )
 77 | 
78 | 79 | ### Mehrere Documents hinzufügen 80 | 81 |
 82 | db.products.insertMany(
 83 |   [
 84 |     {
 85 |       name: "Apfel",
 86 |       price: 0.60,
 87 |       category: 'Obst',
 88 |       views: 2
 89 |     },
 90 |     {
 91 |       name: "Apfel Neu",
 92 |       price: 0.80,
 93 |       category: 'Obst',
 94 |       views: 10
 95 |     },
 96 |     {
 97 |       name: "Kiwi",
 98 |       price: 1.19,
 99 |       category: 'Obst',
100 |       views: 0,
101 |       ratings: [
102 |         { user: 'Paul', stars: 4},
103 |         { user: 'Tom', stars: 5},
104 |         { user: 'Max', stars: 3}
105 |       ]
106 |     }
107 |   ]
108 | )
109 | 
110 | 111 | ## Documents auslesen 112 | 113 | ### Alle Documents aus der Collection anzeigen 114 | 115 |
116 | db.products.find()
117 | 
118 | 119 | ### Ergebnisse formatiert 120 | 121 |
122 | db.products.find().pretty()
123 | 
124 | 125 | ### Ergebnisse filtern 126 | 127 |
128 | db.products.find({ name: 'Apfel' })
129 | 
130 | 131 | ### Ergebnisse sortieren 132 | 133 |
134 | db.products.find().sort({ name: 1 })
135 | db.products.find().sort({ name: -1 })
136 | 
137 | 138 | ### Ergebnisse zählen 139 | 140 |
141 | db.products.find().count()
142 | db.products.countDocuments()
143 | 
144 | 145 | ### Ergebnisse limitieren 146 | 147 |
148 | db.products.find().limit(2)
149 | 
150 | 151 | ### Verkettung mehrerer Funktionen 152 | 153 |
154 | db.products.find().limit(2).sort({ price: 1 })
155 | 
156 | 157 | ### ForEach Schleife 158 | 159 |
160 | db.products.find().forEach(function(doc) {
161 |   print("Produkt: " + doc.name)
162 | })
163 | 
164 | 165 | ### Ergebnisse nach Größer/Kleiner filtern 166 | 167 |
168 | db.products.find({ price: { $gt: 1 } })
169 | db.products.find({ price: { $gte: 0.99 } })
170 | db.products.find({ price: { $lt: 0.99 } })
171 | db.products.find({ price: { $lte: 0.99 } })
172 | 
173 | 174 | ### Feld indexieren 175 | 176 |
177 | db.products.createIndex(
178 |   { name: 'text' },
179 |   { default_language: "german" }
180 | )
181 | 
182 | 183 | ### Alle Indexes anzeigen 184 | 185 |
186 | db.products.getIndexes()
187 | 
188 | 189 | ### Index löschen 190 | 191 |
192 | db.products.dropIndex('name_text')
193 | 
194 | 195 | ### Textsuche 196 | 197 |
198 | db.products.find({
199 |   $text: {
200 |     $search: "Apfel"
201 |   }
202 | })
203 | 
204 | 205 | ### Nur ein Ergebnis 206 | 207 |
208 | db.products.findOne({ category: 'Obst' })
209 | 
210 | 211 | ### Ergebnisse gefiltert und mit bestimmten Feldern 212 | 213 |
214 | db.products.find({ category: 'Obst' }, {
215 |   name: 1,
216 |   price: 1
217 | })
218 | 
219 | 220 | ### Alle Ergebnisse mit bestimmten Feldern 221 | 222 |
223 | db.products.find({}, {
224 |   name: 1,
225 |   price: 1
226 | })
227 | 
228 | 229 | ### Alle Ergebnisse ohne bestimmte Felder 230 | 231 |
232 | db.products.find({}, {
233 |   ratings: 0,
234 |   date: 0
235 | })
236 | 
237 | 238 | ## Documents updaten 239 | 240 | ### Ein Document aktualisieren 241 | 242 |
243 | db.products.updateOne({ name: "Banane" },
244 | {
245 |   $set: {
246 |     price: 1.29
247 |   }
248 | })
249 | 
250 | 251 | ### Ein Document aktualisieren/hinzufügen 252 | 253 |
254 | db.products.updateOne({ name: 'Gurke' },
255 | {
256 |   $set: {
257 |     price: 0.5 ,
258 |     category: 'Gemüse',
259 |     views: 0
260 |   }
261 | },
262 | {
263 |   upsert: true
264 | })
265 | 
266 | 267 | ### Viele Documents aktualisieren 268 | 269 |
270 | db.products.updateMany({ category: "Obst" },
271 | {
272 |   $set: {
273 |     price: 0.2
274 |   }
275 | })
276 | 
277 | 278 | ### Einen Wert erhöhen 279 | 280 |
281 | db.products.updateOne({ name: 'Gurke' },
282 | {
283 |   $inc: {
284 |     views: 1
285 |   }
286 | })
287 | 
288 | 289 | ### Ein Feld umbenennen 290 | 291 |
292 | db.products.update({ name: 'Gurke' },
293 | {
294 |   $rename: {
295 |     views: 'likes'
296 |   }
297 | })
298 | 
299 | 300 | ## Aggregates 301 | 302 | ### Daten aus Collections verarbeiten 303 | 304 |
305 | db.products.aggregate([
306 |   {
307 |     $match: {
308 |       price: { $lt: 0.99 }
309 |     }
310 |   },
311 |   {
312 |     $group: {
313 |       _id: "$category",
314 |       total_views: { $sum: "$views"}
315 |     }
316 |   }
317 | ])
318 | 
319 | 320 | ## Documents löschen 321 | 322 | ### Ein Document löschen 323 | 324 |
325 | db.products.deleteOne({ name: 'Gurke' })
326 | 
327 | 328 | ### Viele Documents löschen 329 | 330 |
331 | db.products.deleteMany({ category: 'Obst' })
332 | 
333 | 334 | ## License 335 | 336 | [MIT](LICENSE) 337 | 338 | [website]: http://programmierenmitmario.de 339 | [twitter]: https://twitter.com/programmierenm 340 | [youtube]: https://youtube.com/programmierenmitmario 341 | [instagram]: https://instagram.com/programmierenm 342 | -------------------------------------------------------------------------------- /tutorial.mongodb: -------------------------------------------------------------------------------- 1 | // NOTE: Datenbank 2 | // Alle Datenbanken anzeigen 3 | show dbs 4 | 5 | // Aktualle Datenbank anzeigen 6 | db 7 | 8 | // Datenbank verwenden/anlegen 9 | use tutorial 10 | 11 | // Datenbank löschen 12 | db.dropDatabase('tutorial') 13 | 14 | // NOTE: Collections 15 | // Neue Collection anlegen 16 | db.createCollection('products') 17 | 18 | // Alle Collections anzeigen 19 | show collections 20 | 21 | // Collection löschen 22 | db.products.drop() 23 | 24 | // NOTE: Documents anlegen 25 | // Ein neues Document hinzufügen 26 | db.products.insertOne( 27 | { 28 | name: "Banane", 29 | price: 0.99, 30 | category: 'Obst', 31 | views: 16 32 | } 33 | ) 34 | 35 | // Mehrere Documents hinzufügen 36 | db.products.insertMany( 37 | [ 38 | { 39 | name: "Apfel", 40 | price: 0.60, 41 | category: 'Obst', 42 | views: 2 43 | }, 44 | { 45 | name: "Apfel Neu", 46 | price: 0.80, 47 | category: 'Obst', 48 | views: 10 49 | }, 50 | { 51 | name: "Kiwi", 52 | price: 1.19, 53 | category: 'Obst', 54 | views: 0, 55 | ratings: [ 56 | { user: 'Paul', stars: 4}, 57 | { user: 'Tom', stars: 5}, 58 | { user: 'Max', stars: 3} 59 | ] 60 | } 61 | ] 62 | ) 63 | 64 | // NOTE: Documents auslesen 65 | // Alle Documents aus der Collection anzeigen 66 | db.products.find() 67 | 68 | // Ergebnisse formatiert 69 | db.products.find().pretty() 70 | 71 | // Ergebnisse filtern 72 | db.products.find({ name: 'Apfel' }) 73 | 74 | // Ergebnisse sortieren 75 | db.products.find().sort({ name: 1 }) 76 | db.products.find().sort({ name: -1 }) 77 | 78 | // Ergebnisse zählen 79 | db.products.find().count() 80 | db.products.countDocuments() 81 | 82 | // Ergebnisse limitieren 83 | db.products.find().limit(2) 84 | 85 | // Verkettung mehrerer Funktionen 86 | db.products.find().limit(2).sort({ price: 1 }) 87 | 88 | // ForEach Schleife 89 | db.products.find().forEach(function(doc) { 90 | print("Produkt: " + doc.name) 91 | }) 92 | 93 | // Ergebnisse nach Größer/Kleiner filtern 94 | db.products.find({ price: { $gt: 1 } }) 95 | db.products.find({ price: { $gte: 0.99 } }) 96 | db.products.find({ price: { $lt: 0.99 } }) 97 | db.products.find({ price: { $lte: 0.99 } }) 98 | 99 | // Feld indexieren 100 | db.products.createIndex( 101 | { name: 'text' }, 102 | { default_language: "german" } 103 | ) 104 | 105 | // Alle Indexes anzeigen 106 | db.products.getIndexes() 107 | 108 | // Index löschen 109 | db.products.dropIndex('name_text') 110 | 111 | // Textsuche 112 | db.products.find({ 113 | $text: { 114 | $search: "Apfel" 115 | } 116 | }) 117 | 118 | // Nur ein Ergebnis 119 | db.products.findOne({ category: 'Obst' }) 120 | 121 | // Ergebnisse gefiltert und mit bestimmten Feldern 122 | db.products.find({ category: 'Obst' }, { 123 | name: 1, 124 | price: 1 125 | }) 126 | 127 | // Alle Ergebnisse mit bestimmten Feldern 128 | db.products.find({}, { 129 | name: 1, 130 | price: 1 131 | }) 132 | 133 | // Alle Ergebnisse ohne bestimmte Felder 134 | db.products.find({}, { 135 | ratings: 0, 136 | date: 0 137 | }) 138 | 139 | // NOTE: Documents updaten 140 | // Ein Document aktualisieren 141 | db.products.updateOne({ name: "Banane" }, 142 | { 143 | $set: { 144 | price: 1.29 145 | } 146 | }) 147 | 148 | // Ein Document aktualisieren/hinzufügen 149 | db.products.updateOne({ name: 'Gurke' }, 150 | { 151 | $set: { 152 | price: 0.5 , 153 | category: 'Gemüse', 154 | views: 0 155 | } 156 | }, 157 | { 158 | upsert: true 159 | }) 160 | 161 | // Viele Documents aktualisieren 162 | db.products.updateMany({ category: "Obst" }, 163 | { 164 | $set: { 165 | price: 0.2 166 | } 167 | }) 168 | 169 | // Einen Wert erhöhen 170 | db.products.updateOne({ name: 'Gurke' }, 171 | { 172 | $inc: { 173 | views: 1 174 | } 175 | }) 176 | 177 | // Ein Feld umbenennen 178 | db.products.update({ name: 'Gurke' }, 179 | { 180 | $rename: { 181 | views: 'likes' 182 | } 183 | }) 184 | 185 | // NOTE: Aggregates 186 | // Daten aus Collections verarbeiten 187 | db.products.aggregate([ 188 | { 189 | $match: { 190 | price: { $lt: 0.99 } 191 | } 192 | }, 193 | { 194 | $group: { 195 | _id: "$category", 196 | total_views: { $sum: "$views"}} 197 | } 198 | ]) 199 | 200 | // NOTE: Documents löschen 201 | // Ein Document löschen 202 | db.products.deleteOne({ name: 'Gurke' }) 203 | 204 | // Viele Documents löschen 205 | db.products.deleteMany({ category: 'Obst' }) --------------------------------------------------------------------------------