Απλά+Παραδείγματα+Χρήσης+mongo

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

Ένας τρόπος για να εκτελέσουμε τα παραδείγματα είναι η χρήση του mongo cli. Πριν από την εκτέλεσή τους, σε περίπτωση που δεν έχουμε κάνει σύνδεση σε συγκεκριμένη βάση, χρειάζεται να εκτελεστεί η εντολή use <όνομα-βάσης>, ώστε να αρχικοποιηθεί η μεταβλητή db κατάλληλα.

Επίσης, τα παραδείγματα μπορούν να δοκιμαστούν και με την χρήση του Robomongo gui. Μπορούμε αντί τις εντολής getCollection('students') να χρησιμοποιούμε κατευθείαν το όνομα της συλλογής students για συντομία (π.χ. οι εντολές db.students.find και db.getCollection('students').find θα δώσουν ακριβώς το ίδιο αποτέλεσμα).

Στα σχόλια που εμφανίζονται πριν από κάθε παράδειγμα γίνεται μια σύντομη επεξήγηση του παραδείγματος και των αποτελεσμάτων που περιμένουμε από αυτό. Τα αποτελέσματα των εντολών θα τα βλέπουμε ανάλογα με το εργαλείο που χρησιμοποιούμε, σε μορφή json αντικειμένων, σε μορφή πίνακα, κ.α. code format="javascript" // db.<όνομα-συλλογής>.find // στο παράδειγμα, επιστρέφει όλη την collection students db.students.find // τα αποτελέσματα θα μοιάζουν με το παρακάτω... /* {   "_id" : ObjectId("557edbe677f641fcb1937a41"), "id" : 18.0000000000000000, "className" : "ΓΠ1", "birthDate" : ISODate("1998-03-30T21:00:00.000Z"), "absences" : 1.0000000000000000, "lastName" : "ΚΑΣΤΡΙΝΑΚΗΣ", "firstName" : "ΚΩΝΣΤΑΝΤΙΝΟΣ", "fathersName" : "ΕΜΜΑΝΟΥΗΛ", "grades" : [ {           "lessonName" : "Πληροφορική σε Επιχειρήσεις και Οργανισμούς", "grade" : 13.0000000000000000 },        {            "lessonName" : "Δίκτυα Υπολογιστών", "grade" : 11.0000000000000000 }   ] } ...

// db.<όνομα-συλλογής>.find({<τι τιμές να έχουν τα πεδία στα έγγραφα που θα επιστρέψει>}, {<ποια πεδία να εμφανίσει>}) // οι παράμετροι είναι προαιρετικοί // το _id είναι πεδίο που αυτόματα δημιουργείται σε κάθε mongo έγγραφο και για να μην // εμφανίζεται στα αποτελέσματα πρέπει να το καθορίζουμε όπως παρακάτω // στο παράδειγμα, επιστρέφει τα πεδία lastName και firstName από όλη την collection students db.students.find({}, {"lastName" : 1, "firstName" : 1, "_id":0}) // τα αποτελέσματα θα μοιάζουν με το παρακάτω... /* {   "lastName" : "ΚΑΣΤΡΙΝΑΚΗΣ", "firstName" : "ΚΩΝΣΤΑΝΤΙΝΟΣ" } {   "lastName" : "ΚΑΒΡΟΥΛΑΚΗΣ", "firstName" : "ΔΗΜΗΤΡΙΟΣ" } ...

// η findOne παίρνει τα ίδια ορίσματα με την find αλλά επιστρέφει το πρώτο έγγραφο που την επαλληθεύει // στο παράδειγμα, επιστρέφει το όνομα και το επώνυμο ενός μαθητή από το τμήμα ΓΠ1 db.students.findOne({"className" : "ΓΠ1"}, {"lastName" : 1, "firstName" : 1, "_id":0}) /* // τα αποτελέσματα θα μοιάζουν με το παρακάτω... {   "lastName" : "ΚΑΣΤΡΙΝΑΚΗΣ", "firstName" : "ΚΩΝΣΤΑΝΤΙΝΟΣ" }

// επιστρέφει τα επώνυμα των μαθητών με όνομα ΑΛΕΞΑΝΔΡΟΣ db.students.find({"firstName" : "ΑΛΕΞΑΝΔΡΟΣ"}, {"lastName" : 1, "_id":0}) // τα αποτελέσματα θα μοιάζουν με το παρακάτω... /* {   "lastName" : "ΚΑΣΤΡΙΝΑΚΗΣ" } ...

// επιστρέφει τις απουσίες των μαθητών με όνομα ΑΛΕΞΑΝΔΡΟΣ και (AND) επώνυμο ΤΟΥΡΛΙΤΗΣ db.students.find({"firstName" : "ΑΛΕΞΑΝΔΡΟΣ", "lastName" : "ΤΟΥΡΛΙΤΗΣ"}, {"absences" : 1, "_id":0}) // τα αποτελέσματα θα μοιάζουν με το παρακάτω... /* {   "absences" : 48.0000000000000000 }

// επιστρέφει τα ονοματεπώνυμα των μαθητών με απουσίες περισσότερες ή ίσες του 64 // $lt -> λιγότερο από // $lte -> λιγότερο ή ίσο του // $gt -> μεγαλύτερο από // $gte -> μεγαλύτερο ή ίσο του // $ne -> διάφορο του db.students.find({"absences" : {"$gte" : 64}}, {"lastName" : 1, "firstName" : 1, "_id":0})

// επιστρέφει τα ονοματεπώνυμα των μαθητών με απουσίες λιγότερες ή ίσες του 64 και μεγαλύτερες ή ίσες του 40 db.students.find({"absences" : {"$gte" : 40, "$lte" : 64}}, {"lastName" : 1, "firstName" : 1, "_id":0})

// επιστρέφει τα ονοματεπώνυμα των μαθητών που γεννήθηκαν τον Ιανουάριο του 1998 db.students.find({"birthDate" : {"$gte" : new Date("1998/01/01"), "$lte" : new Date("1998/01/31")}},                         {"lastName" : 1, "firstName" : 1, "_id":0})

// επιστρέφει τα επώνυμα των μαθητών με όνομα "ΑΛΕΞΑΝΔΡΟΣ" ή "ΑΛΕΞΗΣ" // $nin --> not in db.students.find({"firstName" : {"$in" : ["ΑΛΕΞΑΝΔΡΟΣ", "ΑΛΕΞΗΣ"]}}, {"lastName" : 1, "_id":0})

// επιστρέφει επώνυμο και βαθμούς στο μάθημα Δίκτυα Υπολογιστών db.students.find({"grades.lessonName" : "Δίκτυα Υπολογιστών"}, {"lastName" : 1, "grades.$" : 1, "_id":0}) // τα αποτελέσματα θα μοιάζουν με το παρακάτω... /* {   "lastName" : "ΚΑΣΤΡΙΝΑΚΗΣ", "grades" : [ {           "lessonName" : "Δίκτυα Υπολογιστών", "grade" : 11.0000000000000000 }   ] } ...

// επιστρέφει τον αριθμό των μαθητών με όνομα ΑΛΕΞΑΝΔΡΟΣ db.students.find({"firstName" : "ΑΛΕΞΑΝΔΡΟΣ"}).count

// επιστρέφει την λίστα με τα ονοματεπώνυμα των μαθητών ταξινομημένα βάση τοπυ αριθμού των απουσιών τους db.students.find({}, {"lastName" : 1, "firstName" : 1, "_id":0}).sort({"absences" : 1})

// αρχικά ορίζουμε ένα έγγραφο μαθητή με ονοματεπώνυμο ΜΑΝΟΛΗΣ ΠΑΠΑΔΑΚΗΣ και κωδικό (id) 999 // και στη συνέχεια το εισαγάγουμε στην συλλογή students manos={ "firstName":"ΜΑΝΟΛΗΣ", "lastName":"ΠΑΠΑΔΑΚΗΣ", "id":999 }; db.students.insert(manos)

// ανασύρουμε από την συλλογή το έγγραφο μαθητή με id 999 // αλλάζουμε το επώνυμό του σε ΠΑΠΑΔΟΣΗΦΟΓΙΑΝΝΑΚΗΣ // και το ξανα-αποθηκεύουμε στην βάση manos=db.students.findOne({"id" : 999}); manos.lastName="ΠΑΠΑΔΟΣΗΦΟΓΙΑΝΝΑΚΗΣ"; db.students.update({"id" : 999}, manos)

// διαγραφή του έγγραφου με τιμή id=999 db.students.remove({"id" : 999}) code