MongoDB Πίνακας αντικειμένων χρησιμοποιώντας την insert() με Παράδειγμα
⚡ Έξυπνη Σύνοψη
MongoDB Ο πίνακας αντικειμένων χρησιμοποιώντας την insert() δείχνει πώς να προσθέσετε πολλά έγγραφα σε μια συλλογή με μία λειτουργία. Αποθηκεύει έναν πίνακα εγγραφών υπαλλήλων, ενσωματώνει πίνακες μέσα σε ένα έγγραφο και εμφανίζει τα αποτελέσματα με ακρίβεια χρησιμοποιώντας τη συνάρτηση εκτύπωσης JSON.

Ποια είναι η μέθοδος insert() στο MongoDB?
Η μέθοδος insert() στο MongoDB προσθέτει ένα ή περισσότερα έγγραφα σε μια συλλογή. Ένα έγγραφο είναι ένα σύνολο ζευγών πεδίου και τιμής που είναι αποθηκευμένα σε BSON, μια δυαδική μορφή JSON. Όταν διαβιβάζετε ένα μόνο έγγραφο, η insert() αποθηκεύει αυτήν τη μία εγγραφή. Όταν διαβιβάζετε έναν πίνακα εγγράφων, τα αποθηκεύει όλα σε μία μόνο λειτουργία, η οποία είναι ταχύτερη από την εισαγωγή τους ένα προς ένα.
Η μέθοδος εκτελείται σε μια συγκεκριμένη συλλογή χρησιμοποιώντας το μοτίβο db.collection.insert(). Εάν η συλλογή-στόχος δεν υπάρχει ακόμη, MongoDB το δημιουργεί αυτόματα κατά την πρώτη εισαγωγή. Κάθε έγγραφο λαμβάνει επίσης ένα μοναδικό πεδίο _id εάν δεν παρέχετε ένα, ώστε κάθε εγγραφή να μπορεί να αναγνωριστεί αργότερα.
Ενώ η insert() εξακολουθεί να λειτουργεί, νεότερη MongoDB Οι εκδόσεις παρέχουν τις insertOne() και insertMany() ως σαφέστερες αντικαταστάσεις. Τα παρακάτω παραδείγματα χρησιμοποιούν την insert() για να προσθέσουν έναν πίνακα εγγράφων υπαλλήλων και στη συνέχεια να εμφανίσουν τα αποτελέσματα σε αναγνώσιμη μορφή JSON.
Προσθήκη μιας σειράς εγγράφων
Η εντολή "εισαγωγή" μπορεί επίσης να χρησιμοποιηθεί για την εισαγωγή πολλών εγγράφων σε μια συλλογή ταυτόχρονα. Το παρακάτω παράδειγμα κώδικα μπορεί να χρησιμοποιηθεί για την εισαγωγή πολλών εγγράφων ταυτόχρονα.
Το παρακάτω παράδειγμα δείχνει πώς μπορεί να γίνει αυτό,
Βήμα 1) Δημιουργία JavaΓραφή μεταβλητή που ονομάζεται myEmployee για να κρατήσει τη σειρά των εγγράφων
Βήμα 2) Προσθέστε τα απαιτούμενα έγγραφα με το Όνομα πεδίου και τις τιμές στη μεταβλητή
Βήμα 3) Χρησιμοποιήστε την εντολή εισαγωγής για να εισαγάγετε τον πίνακα εγγράφων στη συλλογή
var myEmployee= [ { "Employeeid" : 1, "EmployeeName" : "Smith" }, { "Employeeid" : 2, "EmployeeName" : "Mohan" }, { "Employeeid" : 3, "EmployeeName" : "Joe" }, ]; db.Employee.insert(myEmployee);
Εάν η εντολή εκτελεστεί με επιτυχία, θα εμφανιστεί η ακόλουθη έξοδος
Η έξοδος δείχνει ότι αυτά τα 3 έγγραφα προστέθηκαν στη συλλογή.
Πώς να εισαγάγετε έναν πίνακα μέσα σε ένα έγγραφο
Εκτός από την εισαγωγή μιας σειράς ξεχωριστών εγγράφων, MongoDB σας επιτρέπει να αποθηκεύσετε έναν πίνακα ως πεδίο μέσα σε ένα μόνο έγγραφο. Αυτό είναι χρήσιμο όταν μια εγγραφή περιέχει φυσικά μια λίστα τιμών, όπως ένας υπάλληλος που έχει πολλές δεξιότητες ή ένας φοιτητής που είναι εγγεγραμμένος σε πολλά μαθήματα. Επειδή MongoDB Χρησιμοποιεί ένα ευέλικτο μοντέλο εγγράφων, ο πίνακας βρίσκεται απευθείας μέσα στο αντικείμενο και όχι σε ξεχωριστό πίνακα, ο οποίος διατηρεί τα σχετικά δεδομένα μαζί.
Το ακόλουθο παράδειγμα εισάγει ένα έγγραφο υπαλλήλου που περιέχει ένα πεδίο πίνακα με το όνομα Δεξιότητες:
db.Employee.insert( { "Employeeid" : 4, "EmployeeName" : "Alan", "Skills" : [ "MongoDB", "Node.js", "Express" ] } );
Τα μέρη αυτού του εγγράφου λειτουργούν ως εξής:
- Αναγνωριστικό υπαλλήλου και Ονομα υπαλλήλου είναι συνηθισμένα ζεύγη πεδίου-τιμής.
- Δεξιότητες είναι ένα πεδίο πίνακα που περιέχει τρεις τιμές συμβολοσειράς μέσα σε αγκύλες.
- Ολόκληρο το έγγραφο, συμπεριλαμβανομένου του ενσωματωμένου πίνακα, αποθηκεύεται σε μία μόνο λειτουργία εισαγωγής.
Αφού προσθέσετε την εγγραφή, μπορείτε να επιβεβαιώσετε τον ενσωματωμένο πίνακα με ένα ερώτημα εύρεσης που εκτυπώνει το αποτέλεσμα σε JSON:
db.Employee.find( { "Employeeid" : 4 } ).forEach(printjson)
Το αποτέλεσμα εμφανίζει τον πίνακα Δεξιότητες που είναι ενσωματωμένος μέσα στο έγγραφο του υπαλλήλου. Later, μπορείτε να προσθέσετε νέες τιμές στον πίνακα με τον τελεστή $push ή να διαβάσετε ένα μεμονωμένο στοιχείο με βάση τη θέση του στο ευρετήριο. Η αποθήκευση συνδεδεμένων τιμών με αυτόν τον τρόπο διατηρεί κάθε έγγραφο αυτόνομο, μειώνει την ανάγκη για ενώσεις μεταξύ συλλογών και διευκολύνει την ανάγνωση και τη συντήρηση των δεδομένων.
insert() vs insertOne() vs insertMany()
MongoDB παρέχει τρεις σχετικές μεθόδους για την προσθήκη δεδομένων. Ο παρακάτω πίνακας τις συγκρίνει, ώστε να μπορείτε να επιλέξετε τη σωστή:
| Μέθοδος | Σκοπός | Παράδειγμα |
|---|---|---|
| εισάγετε() | Παλαιότερη μέθοδος που προσθέτει ένα μόνο έγγραφο ή μια σειρά εγγράφων. Λειτουργεί ακόμα αλλά έχει καταργηθεί σε νεότερα προγράμματα οδήγησης. | db.Employee.insert(ο Υπάλληλός μου) |
| εισαγωγήΈνα() | Προσθέτει ακριβώς ένα έγγραφο και επιστρέφει το _id που έχει εισαχθεί. Προτιμάται για μεμονωμένες εγγραφές. | db.Employee.insertOne({ … }) |
| insertMany() | Προσθέτει έναν πίνακα εγγράφων σε μία κλήση και επιστρέφει όλα τα εισαγόμενα _ids. Προτιμάται για μαζικές εισαγωγές. | db.Employee.insertMany([ { … }, { … } ]) |
Για νέα έργα, χρησιμοποιήστε τις insertOne() και insertMany() επειδή παρέχουν πιο σαφή πρόθεση και καλύτερη αναφορά σφαλμάτων. Η μέθοδος insert() παραμένει διαθέσιμη κυρίως για συμβατότητα με παλαιότερα tutorials και scripts.
Εκτύπωση σε μορφή JSON
JSON είναι μια μορφή που ονομάζεται JavaΣημειογραφία αντικειμένου σεναρίου, και είναι απλώς ένας τρόπος αποθήκευσης πληροφοριών με οργανωμένο, ευανάγνωστο τρόπο. Στα περαιτέρω παραδείγματά μας, θα χρησιμοποιήσουμε τη λειτουργία εκτύπωσης JSON για να δούμε την έξοδο σε καλύτερη μορφή.
Ας δούμε ένα παράδειγμα εκτύπωσης σε μορφή JSON
db.Employee.find().forEach(printjson)
Code Επεξήγηση:
- Η πρώτη αλλαγή είναι η προσθήκη της συνάρτησης που ονομάζεται forEach() στη συνάρτηση find(). Αυτό που κάνει είναι ότι φροντίζει να ελέγχει ρητά κάθε έγγραφο στη συλλογή. Με αυτόν τον τρόπο, έχετε περισσότερο έλεγχο σε ό,τι μπορείτε να κάνετε με κάθε ένα από τα έγγραφα της συλλογής.
- Η δεύτερη αλλαγή είναι να τοποθετήσετε την εντολή printjson στην πρόταση forEach. Αυτό θα κάνει κάθε έγγραφο της συλλογής να εμφανίζεται σε μορφή JSON.
Εάν η εντολή εκτελεστεί με επιτυχία, θα εμφανιστεί η ακόλουθη έξοδος
Παραγωγή:
Η έξοδος δείχνει ξεκάθαρα ότι όλα τα έγγραφα εκτυπώνονται σε στυλ JSON.


