Πώς να ξεκινήσετε με το MongoDB σε 10 λεπτά

Το MongoDB είναι μια πλούσια βάση δεδομένων NoSQL.

Εάν είστε απόλυτα αρχάριος στο NoSQL, σας συνιστώ να ρίξετε μια γρήγορη ματιά στο άρθρο μου NoSQL που δημοσιεύτηκε προηγουμένως.

Σήμερα, ήθελα να μοιραστώ μερικά από τα βασικά πράγματα σχετικά με τις εντολές MongoDB, όπως ερώτημα, φιλτράρισμα δεδομένων, διαγραφή, ενημέρωση και ούτω καθεξής.

Εντάξει, αρκετή από τη συζήτηση, ας πάμε στη δουλειά!

Διαμόρφωση ?

Για να εργαστείτε με το MongoDB, πρώτα πρέπει να εγκαταστήσετε το MongoDB στον υπολογιστή σας. Για να το κάνετε αυτό, επισκεφθείτε το επίσημο κέντρο λήψης και κατεβάστε την έκδοση για το συγκεκριμένο λειτουργικό σας σύστημα. Εδώ, έχω χρησιμοποιήσει Windows.

Μετά τη λήψη της εγκατάστασης διακομιστή κοινότητας MongoDB, θα περάσετε από τη διαδικασία εγκατάστασης «επόμενο μετά από επόμενο». Μόλις τελειώσετε, κατευθυνθείτε προς τη μονάδα δίσκου C στην οποία έχετε εγκαταστήσει το MongoDB. Μεταβείτε στα αρχεία προγράμματος και επιλέξτε τον κατάλογο MongoDB.

C: -> Program Files -> MongoDB -> Server -> 4.0(version) -> bin

Στον κατάλογο bin, θα βρείτε ένα ενδιαφέρον ζευγάρι εκτελέσιμων αρχείων.

  • Μόγκοντ
  • Μόγκο

Ας μιλήσουμε για αυτά τα δύο αρχεία.

mongod σημαίνει "Mongo Daemon". Το mongod είναι μια διαδικασία φόντου που χρησιμοποιείται από το MongoDB. Ο κύριος σκοπός του mongod είναι η διαχείριση όλων των εργασιών διακομιστή MongoDB. Για παράδειγμα, αποδοχή αιτημάτων, απάντηση σε πελάτη και διαχείριση μνήμης.

Το mongo είναι ένα κέλυφος γραμμής εντολών που μπορεί να αλληλεπιδράσει με τον πελάτη (για παράδειγμα, διαχειριστές συστήματος και προγραμματιστές).

Τώρα ας δούμε πώς μπορούμε να θέσουμε σε λειτουργία αυτόν τον διακομιστή. Για να το κάνετε αυτό στα Windows, πρώτα πρέπει να δημιουργήσετε μερικούς καταλόγους στη μονάδα δίσκου C. Ανοίξτε τη γραμμή εντολών σας στη μονάδα C και κάντε τα εξής:

C:\> mkdir data/dbC:\> cd dataC:\> mkdir db

Ο σκοπός αυτών των καταλόγων είναι το MongoDB να απαιτεί ένα φάκελο για την αποθήκευση όλων των δεδομένων. Η προεπιλεγμένη διαδρομή καταλόγου δεδομένων του MongoDB βρίσκεται /data/dbστη μονάδα δίσκου. Επομένως, είναι απαραίτητο να παρέχουμε αυτούς τους καταλόγους έτσι.

Εάν ξεκινήσετε το διακομιστή MongoDB χωρίς αυτούς τους καταλόγους, πιθανότατα θα δείτε αυτό το ακόλουθο σφάλμα:

Αφού δημιουργήσετε αυτά τα δύο αρχεία, κατευθυνθείτε ξανά στον φάκελο bin που έχετε στον κατάλογο mongodb και ανοίξτε το κέλυφος σας μέσα σε αυτόν. Εκτελέστε την ακόλουθη εντολή:

mongod

Βόλα! Τώρα ο διακομιστής MongoDB λειτουργεί και λειτουργεί! ;

Για να συνεργαστούμε με αυτόν τον διακομιστή, χρειαζόμαστε έναν μεσολαβητή. Ανοίξτε λοιπόν ένα άλλο παράθυρο εντολών μέσα στο φάκελο bind και εκτελέστε την ακόλουθη εντολή:

mongo

Αφού εκτελέσετε αυτήν την εντολή, μεταβείτε στο κέλυφος που εκτελέσαμε την εντολή mongod (που είναι ο διακομιστής μας). Στο τέλος θα δείτε ένα μήνυμα "αποδεκτή σύνδεση". Αυτό σημαίνει ότι η εγκατάσταση και η διαμόρφωση είναι επιτυχής!

Απλώς τρέξτε στο κέλυφος mongo:

db

Ρύθμιση μεταβλητών περιβάλλοντος

Για να εξοικονομήσετε χρόνο, μπορείτε να ρυθμίσετε τις μεταβλητές περιβάλλοντος. Στα Windows, αυτό γίνεται ακολουθώντας τα παρακάτω μενού:

Advanced System Settings -> Environment Variables -> Path(Under System Variables) -> Edit

Απλώς αντιγράψτε τη διαδρομή του φακέλου bin και πατήστε OK! Στην περίπτωσή μου είναιC:\Program Files\MongoDB\Server\4.0\bin

Τώρα είστε έτοιμοι!

Εργασία με το MongoDB

Υπάρχει μια δέσμη GUI (Γραφικό περιβάλλον εργασίας χρήστη) για εργασία με διακομιστή MongoDB, όπως το MongoDB Compass, το Studio 3T και ούτω καθεξής.

Παρέχουν μια γραφική διεπαφή, ώστε να μπορείτε εύκολα να εργαστείτε με τη βάση δεδομένων σας και να εκτελέσετε ερωτήματα αντί να χρησιμοποιήσετε ένα κέλυφος και να πληκτρολογήσετε ερωτήματα με μη αυτόματο τρόπο.

Αλλά σε αυτό το άρθρο θα χρησιμοποιήσουμε τη γραμμή εντολών για να κάνουμε τη δουλειά μας.

Τώρα ήρθε η ώρα να βρούμε εντολές MongoDB που θα σας βοηθήσουν να χρησιμοποιήσετε με τα μελλοντικά σας έργα.

  1. Ανοίξτε τη γραμμή εντολών και πληκτρολογήστε mongodγια να ξεκινήσετε το διακομιστή MongoDB.

2. Ανοίξτε ένα άλλο κέλυφος και πληκτρολογήστε mongoγια σύνδεση με το διακομιστή βάσης δεδομένων MongoDB.

1. Εύρεση της τρέχουσας βάσης δεδομένων στην οποία βρίσκεστε

db

Αυτή η εντολή θα δείξει την τρέχουσα βάση δεδομένων στην οποία βρίσκεστε. testΕίναι η αρχική βάση δεδομένων που έρχεται από προεπιλογή.

2. Καταχώριση βάσεων δεδομένων

show databases

Αυτή τη στιγμή έχω τέσσερις βάσεις δεδομένων. Αυτά είναι: CrudDB, admin, configκαι local.

3. Μεταβείτε σε μια συγκεκριμένη βάση δεδομένων

use 

Here I’ve moved to the local database. You can check this if you try the command dbto print out the current database name.

4. Creating a Database

With RDBMS (Relational Database Management Systems) we have Databases, Tables, Rows and Columns.

But in NoSQL databases, such as MongoDB, data is stored in BSON format (a binary version of JSON). They are stored in structures called “collections”.

In SQL databases, these are similar to Tables.

Alright, let’s talk about how we create a database in the mongo shell.

use 

Wait, we had this command before! Why am I using it again?!

In MongoDB server, if your database is present already, using that command will navigate into your database.

But if the database is not present already, then MongoDB server is going to create the database for you. Then, it will navigate into it.

After creating a new database, running the show database command will not show your newly created database. This is because, until it has any data (documents) in it, it is not going to show in your db list.

5. Creating a Collection

Navigate into your newly created database with the usecommand.

Actually, there are two ways to create a collection. Let’s see both.

One way is to insert data into the collection:

db.myCollection.insert({"name": "john", "age" : 22, "location": "colombo"})

This is going to create your collection myCollectioneven if the collection does not exist. Then it will insert a document with nameand age. These are non-capped collections.

The second way is shown below:

2.1 Creating a Non-Capped Collection

db.createCollection("myCollection")

2.2 Creating a Capped Collection

db.createCollection("mySecondCollection", {capped : true, size : 2, max : 2})

In this way, you’re going to create a collection without inserting data.

A “capped collection” has a maximum document count that prevents overflowing documents.

In this example, I have enabled capping, by setting its value to true.

The size : 2 means a limit of two megabytes, and max: 2 sets the maximum number of documents to two.

Now if you try to insert more than two documents to mySecondCollection and use the find command (which we will talk about soon), you’ll only see the most recently inserted documents. Keep in mind this doesn’t mean that the very first document has been deleted — it is just not showing.

6. Inserting Data

We can insert data to a new collection, or to a collection that has been created before.

There are three methods of inserting data.

  1. insertOne() is used to insert a single document only.
  2. insertMany() is used to insert more than one document.
  3. insert() is used to insert documents as many as you want.

Below are some examples:

  • insertOne()
db.myCollection.insertOne( { "name": "navindu", "age": 22 } )
  • insertMany()
db.myCollection.insertMany([ { "name": "navindu", "age": 22 }, { "name": "kavindu", "age": 20 }, { "name": "john doe", "age": 25, "location": "colombo" } ])

The insert() method is similar to the insertMany() method.

Also, notice we have inserted a new property called locationon the document for John Doe. So if youusefind, then you’ll see only forjohn doe the locationproperty is attached.

This can be an advantage when it comes to NoSQL databases such as MongoDB. It allows for scalability.

7. Querying Data

Here’s how you can query all data from a collection:

db.myCollection.find()

If you want to see this data in a cleaner, way just add .pretty()to the end of it. This will display document in pretty-printed JSON format.

db.myCollection.find().pretty()

Wait...In these examples did you just notice something like _id? How did that get there?

Well, whenever you insert a document, MongoDB automatically adds an _id field which uniquely identifies each document. If you do not want it to display, just simply run the following command

db.myCollection.find({}, _id: 0).pretty()

Next, we’ll look at filtering data.

If you want to display some specific document, you could specify a single detail of the document which you want to be displayed.

db.myCollection.find( { name: "john" } )

Let’s say you want only to display people whose age is less than 25. You can use $lt to filter for this.

db.myCollection.find( { age : {$lt : 25} } )

Similarly, $gt stands for greater than, $lte is “less than or equal to”, $gte is “greater than or equal to” and $ne is “not equal”.

8. Updating documents

Let’s say you want to update someone’s address or age, how you could do it? Well, see the next example:

db.myCollection.update({age : 20}, {$set: {age: 23}})

The first argument is the field of which document you want to update. Here, I specify age for the simplicity. In production environment, you could use something like the _id field.

It is always better to use something like _id to update a unique row. This is because multiple fields can have same age and name. Therefore, if you update a single row, it will affect all rows which have same name and age.

If you update a document this way with a new property, let’s say location for example, the document will be updated with the new attribute. And if you do a find, then the result will be:

If you need to remove a property from a single document, you could do something like this (let’s say you want ageto be gone):

db.myCollection.update({name: "navindu"}, {$unset: age});

9. Removing a document

As I have mentioned earlier, when you update or delete a document, you just need specify the _id not just name, age, location.

db.myCollection.remove({name: "navindu"});

10. Removing a collection

db.myCollection.remove({});

Note, this is not equal to the drop() method. The difference is drop() is used to remove all the documents inside a collection, but the remove() method is used to delete all the documents along with the collection itself.

Logical Operators

MongoDB provides logical operators. The picture below summarizes the different types of logical operators.

Let’s say you want to display people whose age is less than 25, and also whose location is Colombo. What we could do?

We can use the $andoperator!

db.myCollection.find({$and:[{age : {$lt : 25}}, {location: "colombo"}]});

Last but not least, let’s talk aboutaggregation.

Aggregation

A quick reminder on what we learned about aggregation functions in SQL databases:

Με απλά λόγια, η συγκέντρωση ομαδοποιεί τιμές από πολλά έγγραφα και τις συνοψίζει με κάποιο τρόπο.

Φανταστείτε αν είχαμε άνδρες και γυναίκες μαθητές σε μια recordBookσυλλογή και θέλουμε μια συνολική μέτρηση σε καθέναν από αυτούς. Προκειμένου να πάρουμε το άθροισμα των ανδρών και των θηλυκών, θα μπορούσαμε να χρησιμοποιήσουμε τη $groupσυνάθροιση συνάρτηση.

db.recordBook.aggregate([ { $group : {_id : "$gender", result: {$sum: 1}} } ]);

Τυλίγοντας

Έτσι, έχουμε συζητήσει τα βασικά στοιχεία του MongoDB που μπορεί να χρειαστείτε στο μέλλον για να δημιουργήσετε μια εφαρμογή. Ελπίζω να απολαύσατε αυτό το άρθρο - ευχαριστώ για την ανάγνωση!

Εάν έχετε απορίες σχετικά με αυτό το σεμινάριο, μη διστάσετε να σχολιάσετε την παρακάτω ενότητα σχολίων ή επικοινωνήστε μαζί μου στο Facebook ή στο Twitter ή στο Instagram.

Τα λέμε στο επόμενο άρθρο! ❤️ ✌;

Σύνδεσμος με το προηγούμενο άρθρο μου: NoSQL