MongoDB Έγγραφο ερωτήματος: db.collection.find() με Παράδειγμα

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

MongoDB Οι λειτουργίες ερωτήματος εγγράφου ανακτούν εγγραφές από μια συλλογή χρησιμοποιώντας τη συνάρτηση db.collection.find(). Η μέθοδος επιστρέφει όλα τα έγγραφα από προεπιλογή, δέχεται κριτήρια φιλτραρίσματος όπως αντιστοιχίσεις πεδίων και τον τελεστή $gt, και μορφοποιεί τα αποτελέσματα με την εντολή forEach(printjson).

  • 🔍 Συνάρτηση find(): Η μέθοδος db.collection.find() ανακτά έγγραφα από ένα MongoDB συλλογή, επιστρέφοντας κάθε έγγραφο όταν δεν δίνεται φίλτρο.
  • 🎯 Κριτήρια φιλτραρίσματος: Η διαβίβαση ενός αντικειμένου ερωτήματος, όπως {EmployeeName: “Smith”}, επιστρέφει μόνο τα έγγραφα που ταιριάζουν με τη συνθήκη.
  • Απορία Operators: Οι τελεστές επιλογής όπως $gt, $lt και $in βελτιώνουν τα αποτελέσματα, για παράδειγμα βρίσκοντας υπαλλήλους με αναγνωριστικό μεγαλύτερο από 2.
  • 🖨️ Readable Παραγωγή: Η αλυσιδωτή σύνδεση forEach(printjson) εκτυπώνει κάθε επιστρεφόμενο έγγραφο σε καθαρή μορφή JSON.
  • 🧾 Προβολή: Ένα δεύτερο όρισμα στην find() επιλέγει ποια πεδία θα συμπεριληφθούν ή θα εξαιρεθούν από τα αποτελέσματα.

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

MongoDB παρέχει μια συνάρτηση που ονομάζεται db.collection.find() που χρησιμοποιείται για την ανάκτηση εγγράφων από α MongoDB βάση δεδομένων.

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

Τι είναι η db.collection.find() στο MongoDB?

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

Η μέθοδος επιστρέφει έναν κέρσορα, ο οποίος είναι ένας δείκτης στο σύνολο αποτελεσμάτων και όχι στα ίδια τα έγγραφα. Συνήθως κάνετε επανάληψη μέσω του κέρσορα για να εμφανίσετε τα αποτελέσματα, συχνά με την forEach(printjson) για να εμφανίσετε κάθε έγγραφο σε αναγνώσιμο JSON. Εάν χρειάζεστε μόνο μία εγγραφή, MongoDB παρέχει επίσης findOne(), η οποία επιστρέφει το πρώτο έγγραφο που ταιριάζει αντί για δρομέα. Μαζί, οι find() και findOne() καλύπτουν τις περισσότερες λειτουργίες ανάγνωσης σε ένα MongoDB βάση δεδομένων, από την ανάκτηση ολόκληρων συλλογών έως το φιλτράρισμα με βάση συγκεκριμένες τιμές πεδίων.

MongoDB Βασικό ερώτημα Operaσεις

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

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

MongoDB Βασικό ερώτημα Operaσεις
MongoDB Βασική λειτουργία ερωτήματος

Code Επεξήγηση:

  1. Υπάλληλος είναι το όνομα συλλογής στο MongoDB βάσεις δεδομένων
  2. The MongoDB Η αναζήτηση αναζήτησης είναι μια ενσωματωμένη συνάρτηση που χρησιμοποιείται για την ανάκτηση των εγγράφων της συλλογής.

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

Παραγωγή:

MongoDB Βασικό ερώτημα Operaσεις

Η έξοδος εμφανίζει όλα τα έγγραφα που υπάρχουν στη συλλογή.

Μπορούμε επίσης να προσθέσουμε κριτήρια στα ερωτήματά μας, ώστε να μπορούμε να ανακτήσουμε έγγραφα βάσει συγκεκριμένων συνθηκών.

MongoDB Παράδειγμα ερωτήματος – 1

Ας δούμε μερικά MongoDB ρωτήστε παραδείγματα για το πώς μπορούμε να το πετύχουμε αυτό.

db.Employee.find({EmployeeName : "Smith"}).forEach(printjson);

Code Επεξήγηση:

  1. Εδώ θέλουμε να βρούμε έναν Υπάλληλο του οποίου το όνομα είναι "Smith" στη συλλογή, επομένως εισάγουμε τα κριτήρια φίλτρου ως EmployeeName: "Smith"

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

Παραγωγή:

MongoDB Παράδειγμα ερωτήματος

Η έξοδος δείχνει ότι επιστρέφεται μόνο το έγγραφο που περιέχει το "Smith" ως Όνομα Υπαλλήλου.

MongoDB Παράδειγμα ερωτήματος – 2

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

db.Employee.find({Employeeid : {$gt:2}}).forEach(printjson);

Code Επεξήγηση:

  1. Εδώ θέλουμε να βρούμε για όλους τους Υπαλλήλους των οποίων το αναγνωριστικό είναι μεγαλύτερο από 2. Ο $gt ονομάζεται τελεστής επιλογής ερωτήματος και αυτό που σημαίνει απλώς είναι να χρησιμοποιήσουμε την έκφραση μεγαλύτερο από.

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

Παραγωγή:

MongoDB Παράδειγμα ερωτήματος

Όλα τα έγγραφα στα οποία το αναγνωριστικό υπαλλήλου είναι μεγαλύτερο από 2 επιστρέφονται.

MongoDB Απορία Operaκορμοί

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

OperaTor Νόημα Παράδειγμα
$gt Μεγαλύτερος από {Αριθμός Υπαλλήλου: {$gt: 2}}
$lt Less από {Αριθμός Υπαλλήλου: {$lt: 5}}
$gte Μεγαλύτερο ή ίσο με {ηλικία: {$gte: 18}}
$lte Less από ή ίσο με {ηλικία: {$lte: 60}}
$ne Οχι ίσο με {κατάσταση: {$ne: “ενεργό”}}
$ σε Αντιστοιχεί σε οποιαδήποτε τιμή σε μια λίστα {τμήμα: {$σε: [“HR”,”IT”]}}

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

Πώς να χρησιμοποιήσετε την προβολή με find()

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

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

db.Employee.find({}, {EmployeeName: 1}).forEach(printjson);

MongoDB επιστρέφει πάντα το πεδίο _id εκτός αν το εξαιρέσετε ρητά. Για να το αποκρύψετε, ορίστε το _id σε 0:

db.Employee.find({}, {EmployeeName: 1, _id: 0}).forEach(printjson);

Μπορείτε επίσης να εξαιρέσετε πεδία αντί να τα συμπεριλάβετε, ορίζοντας τα σε 0. Για παράδειγμα, το παρακάτω ερώτημα επιστρέφει κάθε πεδίο εκτός από το EmployeeID:

db.Employee.find({}, {Employeeid: 0}).forEach(printjson);

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

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

Η find() επιστρέφει έναν κέρσορα σε όλα τα έγγραφα που ταιριάζουν με το ερώτημα, επομένως μπορεί να επιστρέψει πολλά αποτελέσματα. Η findOne() επιστρέφει μόνο το πρώτο έγγραφο που ταιριάζει ως μοναδικό αντικείμενο ή null εάν δεν ταιριάζει κανένα.

Συνδέστε τις συναρτήσεις sort() και limit() στον κέρσορα find(). Για παράδειγμα, η συνάρτηση find().sort({age:1}).limit(5) επιστρέφει τις πέντε νεότερες εγγραφές. Χρησιμοποιήστε 1 για αύξουσα σειρά και -1 για φθίνουσα σειρά στην συνάρτηση sort().

Χρησιμοποιήστε την countDocuments() με το ίδιο φίλτρο, για παράδειγμα db.Employee.countDocuments({EmployeeName:”Smith”}). Επιστρέφει τον αριθμό των εγγράφων που ταιριάζουν χωρίς να τα ανακτήσει, κάτι που είναι ταχύτερο από την ανάγνωση και την καταμέτρηση ολόκληρου του συνόλου αποτελεσμάτων.

Η Τεχνητή Νοημοσύνη μπορεί να μετατρέψει ένα αίτημα απλής γλώσσας σε ένα ερώτημα find() με τους σωστούς τελεστές και προβολή, και να εξηγήσει κάθε μέρος. Πάντα να δοκιμάζετε το ερώτημα σε δείγματα δεδομένων πριν το εκτελέσετε στην παραγωγή.

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

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