11 Ερωτήματα και λειτουργίες MongoDB που πρέπει να γνωρίζετε

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

MUO VIDEO ΤΗΣ ΗΜΕΡΑΣ

ΚΥΛΙΣΤΕ ΓΙΑ ΝΑ ΣΥΝΕΧΙΣΕΤΕ ΜΕ ΠΕΡΙΕΧΟΜΕΝΟ

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

1. Δημιουργία ή εναλλαγή βάσεων δεδομένων

Η δημιουργία μιας βάσης δεδομένων τοπικά μέσω του κελύφους MongoDB είναι απλή, ειδικά αν έχετε δημιουργήσει ένα απομακρυσμένο σύμπλεγμα. Μπορείτε να δημιουργήσετε μια νέα βάση δεδομένων στο MongoDB με την εντολή use:

 use db_name 

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

2. Απόθεση βάσης δεδομένων

Πρώτα, μεταβείτε στη βάση δεδομένων που θέλετε να απορρίψετε χρησιμοποιώντας την εντολή use όπως έγινε προηγουμένως. Στη συνέχεια, αποθέστε τη βάση δεδομένων χρησιμοποιώντας την εντολή dropDatabase():

 use db_name
db.dropDatabase()

3. Δημιουργήστε μια συλλογή

Για να δημιουργήσετε μια συλλογή, μεταβείτε στη βάση δεδομένων προορισμού. Χρησιμοποιήστε τη λέξη-κλειδί createCollection() για να δημιουργήσετε μια νέα συλλογή MongoDB:

 db.createCollection("collection_name")

Αντικαταστήστε το collection_name με το όνομα συλλογής που έχετε επιλέξει.

  Πώς να αναφέρετε κάποιον στις ομάδες iMessage σε iPhone και iPad

4. Εισαγάγετε το έγγραφο σε μια συλλογή

Κατά την αποστολή δεδομένων σε μια συλλογή, μπορείτε να εισαγάγετε ένα μεμονωμένο έγγραφο ή μια σειρά εγγράφων.

Για να εισαγάγετε ένα μόνο έγγραφο:

 db.collection_name.insertOne({"Name":"Idowu", "Likes":"Chess"})

Μπορείτε επίσης να χρησιμοποιήσετε την παραπάνω μέθοδο για να εισαγάγετε μια σειρά εγγράφων με ένα αναγνωριστικό:

 db.collection_name.insertOne([{"Name":"Idowu", "Likes":"Chess"}, {"Language": "Mongo", "is_admin": true}])

Για να εισαγάγετε πολλά έγγραφα ταυτόχρονα, με το καθένα να έχει ξεχωριστά αναγνωριστικά, χρησιμοποιήστε τη λέξη-κλειδί insertMany:

 db.collection_name.insertMany([{"Name":"Idowu", "Likes":"Chess"}, {"Name": "Paul", "Likes": "Wordle"}])

5. Λάβετε όλα τα έγγραφα από μια συλλογή

Μπορείτε να ρωτήσετε όλα τα έγγραφα από μια συλλογή χρησιμοποιώντας τη λέξη-κλειδί find():

 db.collection_name.find()

Το παραπάνω επιστρέφει όλα τα έγγραφα μέσα στην καθορισμένη συλλογή:

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

 db.collection_name.find().limit(2)

6. Φιλτράρετε τα έγγραφα σε μια συλλογή

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

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

 db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})

Το παραπάνω επιστρέφει όλα τα έγγραφα όπου η τιμή των Likes είναι Wordle. Εξάγει μόνο τα ονόματα και αγνοεί το αναγνωριστικό εγγράφου.

Μπορείτε επίσης να φιλτράρετε μια συλλογή με έναν αριθμητικό παράγοντα. Ας υποθέσουμε ότι θέλετε να λάβετε τα ονόματα όλων των χρηστών άνω των 21 ετών, χρησιμοποιήστε τον τελεστή $gt:

 db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})

Η έξοδος μοιάζει με αυτό:

Δοκιμάστε να αντικαταστήσετε το find με το findOne για να δείτε τι συμβαίνει. Ωστόσο, υπάρχουν πολλές άλλες λέξεις-κλειδιά φιλτραρίσματος:

  • $lt: Όλες οι τιμές είναι μικρότερες από την καθορισμένη.
  • $gte: Τιμές ίσες ή μεγαλύτερες από την καθορισμένη.
  • $lte: Τιμές που είναι μικρότερες ή ίσες με την καθορισμένη.
  • $eq: Λαμβάνει όλες τις τιμές ίσες με την καθορισμένη.
  • $ne: Όλες οι τιμές δεν είναι ίσες με την καθορισμένη.
  • $in: Χρησιμοποιήστε το όταν κάνετε ερώτημα με βάση έναν πίνακα. Λαμβάνει όλες τις τιμές που ταιριάζουν με οποιοδήποτε από τα στοιχεία του πίνακα. Η λέξη-κλειδί $nin κάνει το αντίθετο.
  11 καλύτερα API eSignature για την επιχείρησή σας [2023]

7. Ταξινόμηση ερωτημάτων

Η ταξινόμηση βοηθά στη διευθέτηση του ερωτήματος με μια συγκεκριμένη σειρά. Μπορείτε να ταξινομήσετε με φθίνουσα ή αύξουσα σειρά. Λάβετε υπόψη ότι η ταξινόμηση απαιτεί αριθμητική αναφορά.

Για παράδειγμα, για ταξινόμηση με αύξουσα σειρά:

 db.collection_name.find({"Likes":"Chess"}).sort({"Age":1})

Για να ταξινομήσετε το παραπάνω ερώτημα με φθίνουσα σειρά, αντικαταστήστε το “1” με το “-1”.

 db.collection_name.find({"Likes":"Chess"}).sort({"Age":-1})

8. Ενημερώστε ένα έγγραφο

Οι ενημερώσεις MongoDB απαιτούν από τους ατομικούς τελεστές να καθορίσουν πώς θέλετε να γίνει η ενημέρωση. Ακολουθεί μια λίστα με τους συνήθως χρησιμοποιούμενους ατομικούς τελεστές που μπορείτε να αντιστοιχίσετε με ένα ερώτημα ενημέρωσης:

  • $set: Προσθέστε ένα νέο πεδίο ή αλλάξτε ένα υπάρχον πεδίο.
  • $push: Εισαγάγετε ένα νέο στοιχείο σε έναν πίνακα. Συνδυάστε το με τον τελεστή $κάθε για να εισαγάγετε πολλά στοιχεία ταυτόχρονα.
  • $pull: Αφαιρέστε ένα στοιχείο από έναν πίνακα. Χρησιμοποιήστε το με το $in για να αφαιρέσετε πολλά στοιχεία ταυτόχρονα.
  • $unset: Αφαιρέστε ένα πεδίο από ένα έγγραφο.

Για να ενημερώσετε ένα έγγραφο και να προσθέσετε ένα νέο πεδίο, για παράδειγμα:

 db.collection_name.updateOne({"Name":"Sandy"}, {"$set":{"Name":"James", "email":"[email protected]"}})

Το παραπάνω ενημερώνει το καθορισμένο έγγραφο όπως φαίνεται:

Η κατάργηση του πεδίου email είναι απλή με τον τελεστή $unset:

 db.collection_name.updateOne({"Name":"Sandy"}, {"$unset":{"email":"[email protected]"}})

Εξετάστε τα ακόλουθα δείγματα δεδομένων:

Μπορείτε να εισαγάγετε ένα στοιχείο στο υπάρχον πεδίο πίνακα στοιχείων χρησιμοποιώντας τον τελεστή $push:

 db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items":"Plantain"}})

Εδώ είναι η έξοδος:

Χρησιμοποιήστε τον τελεστή $κάθε για να εισαγάγετε πολλά στοιχεία ταυτόχρονα:

 db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items": {"$each":["Almond", "Melon"]}}})

Εδώ είναι η έξοδος:

Όπως αναφέρθηκε, ο τελεστής $pull αφαιρεί ένα στοιχείο από έναν πίνακα:

 db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})

Τα ενημερωμένα δεδομένα μοιάζουν με αυτό:

  Κορυφαίοι 12 μίνι υπολογιστές για φορητότητα και απόδοση

Συμπεριλάβετε τη λέξη-κλειδί $in για να αφαιρέσετε πολλά στοιχεία σε έναν πίνακα με μία κίνηση:

 db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":["Almond", "Melon"]} }}) 

9. Διαγράψτε ένα έγγραφο ή ένα πεδίο

Η λέξη-κλειδί deleteOne ή deleteMany απορρίπτει ένα έγγραφο από μια συλλογή. Χρησιμοποιήστε το deleteOne για να καταργήσετε ένα έγγραφο που βασίζεται σε ένα καθορισμένο πεδίο:

 db.collection_name.deleteOne({"Name":"IDNoble"})

Εάν θέλετε να διαγράψετε πολλά έγγραφα με κοινά κλειδιά, χρησιμοποιήστε το deleteMany. Το παρακάτω ερώτημα διαγράφει όλα τα έγγραφα που περιέχουν το Chess ως Likes τους.

 db.collection.deleteMany({"Likes":"Chess"})

10. Λειτουργία Ευρετηρίου

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

Η ευρετηρίαση MongoDB είναι παρόμοια με τον τρόπο που χρησιμοποιείτε τα ευρετήρια για τη βελτιστοποίηση των ερωτημάτων SQL. Για παράδειγμα, για να δημιουργήσετε ένα αύξοντα ευρετήριο στο πεδίο Όνομα:

 db.collection.createIndex({"Name":1})

Για να καταχωρήσετε τα ευρετήρια σας:

 db.collection.getIndexes()

Τα παραπάνω είναι μόνο ένα προοίμιο. Υπάρχουν πολλές άλλες μέθοδοι για τη δημιουργία ευρετηρίου στο MongoDB.

11. Συγκέντρωση

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

Εξετάστε τα ακόλουθα δεδομένα πωλήσεων, για παράδειγμα:

Χρησιμοποιώντας τη συνάθροιση του MongoDB, μπορείτε να υπολογίσετε και να αποθηκεύσετε τον συνολικό αριθμό των προϊόντων που πωλήθηκαν για κάθε κατηγορία ως εξής:

 db.sales.aggregate([{$group:{"_id":"$Section", "totalSold":{$sum:"$Sold"}}}, {$project:{"_id":0, "totalSold":1, "Section":"$_id"}}])

Το παραπάνω ερώτημα επιστρέφει τα εξής:

Κύρια ερωτήματα MongoDB

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

Ωστόσο, ενδέχεται να υπάρχουν κάποιες αποκλίσεις στις βασικές συντακτικές. Για παράδειγμα, ενώ ορισμένες γλώσσες προγραμματισμού όπως η Python αναγνωρίζουν περιπτώσεις φιδιών, άλλες, συμπεριλαμβανομένης της JavaScript, χρησιμοποιούν την θήκη καμήλας. Βεβαιωθείτε ότι ερευνάτε τι λειτουργεί για την τεχνολογία που έχετε επιλέξει.