MongoDB Πίνακας αντικειμένων χρησιμοποιώντας την insert() με Παράδειγμα

⚡ Έξυπνη Σύνοψη

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

  • 📥 Μαζική εισαγωγή: Η μέθοδος insert() προσθέτει μια σειρά από έγγραφα σε μια συλλογή με μία μόνο, αποτελεσματική λειτουργία.
  • 🧾 Μοντέλο εγγράφου: Κάθε έγγραφο είναι ένα σύνολο ζευγών πεδίου και τιμής, και MongoDB προσθέτει αυτόματα ένα μοναδικό _id.
  • 🗂️ Ενσωματωμένοι πίνακες: Ένας πίνακας μπορεί επίσης να υπάρχει ως πεδίο μέσα σε ένα έγγραφο, ας πούμεping σχετικές αξίες μαζί.
  • 🔁 Σύγχρονες μέθοδοι: Οι insertOne() και insertMany() είναι οι τρέχουσες, σαφέστερες αντικαταστάσεις για την παλαιότερη μέθοδο insert().
  • 🖨️ Readable Παραγωγή: Η εντολή forEach(printjson) εκτυπώνει κάθε έγγραφο σε καθαρή, ευανάγνωστη μορφή 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);

Εάν η εντολή εκτελεστεί με επιτυχία, θα εμφανιστεί η ακόλουθη έξοδος

MongoDB Πίνακας αντικειμένων με χρήση insert()

Η έξοδος δείχνει ότι αυτά τα 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 Επεξήγηση:

  1. Η πρώτη αλλαγή είναι η προσθήκη της συνάρτησης που ονομάζεται forEach() στη συνάρτηση find(). Αυτό που κάνει είναι ότι φροντίζει να ελέγχει ρητά κάθε έγγραφο στη συλλογή. Με αυτόν τον τρόπο, έχετε περισσότερο έλεγχο σε ό,τι μπορείτε να κάνετε με κάθε ένα από τα έγγραφα της συλλογής.
  2. Η δεύτερη αλλαγή είναι να τοποθετήσετε την εντολή printjson στην πρόταση forEach. Αυτό θα κάνει κάθε έγγραφο της συλλογής να εμφανίζεται σε μορφή JSON.

Εάν η εντολή εκτελεστεί με επιτυχία, θα εμφανιστεί η ακόλουθη έξοδος

Παραγωγή:

Εκτύπωση σε μορφή JSON

Η έξοδος δείχνει ξεκάθαρα ότι όλα τα έγγραφα εκτυπώνονται σε στυλ JSON.

Συχνές Ερωτήσεις

Ναι. Η διαβίβαση μιας σειράς εγγράφων στην insert() τα προσθέτει όλα σε μία λειτουργία. Αυτή η μαζική εισαγωγή είναι ταχύτερη από την κλήση της insert() ξεχωριστά για κάθε έγγραφο, αν και η insertMany() είναι πλέον η προτιμώμενη μέθοδος.

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

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

Ναι. Τα εργαλεία τεχνητής νοημοσύνης μπορούν να μετατρέψουν μια περιγραφή των δεδομένων σας σε απλή γλώσσα σε εντολές insertOne() ή insertMany(), συμπεριλαμβανομένων των ενσωματωμένων πινάκων. Να ελέγχετε πάντα τα πεδία και τους τύπους δεδομένων που δημιουργούνται πριν τα εκτελέσετε σε μια βάση δεδομένων.

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

Συνοψίστε αυτήν την ανάρτηση με: