Apgūstiet MongoDB vaicājumus un darbības, izmantojot šo parocīgo rokasgrāmatu.

MongoDB ir viena no vispieprasītākajām un apbrīnotākajām NoSQL datu bāzēm profesionālai attīstībai. Tā elastība, mērogojamība un spēja apstrādāt lielu datu apjomu padara to par labāko izvēli mūsdienu lietojumprogrammām. Ja vēlaties apgūt MongoDB parastos vaicājumus un darbības, jūs esat īstajā vietā.

Neatkarīgi no tā, vai vēlaties efektīvi izgūt un apstrādāt datus, ieviest stabilus datu modeļus vai izveidot atsaucīgus lietojumprogrammas, iegūstot dziļu izpratni par izplatītajiem MongoDB vaicājumiem un darbībām, neapšaubāmi uzlabos jūsu prasmes.

1. Izveidot vai pārslēgt datu bāzes

Datu bāzes izveide lokāli, izmantojot MongoDB Shell, ir vienkārša, it īpaši, ja esat iestatījis attālo klasteru. Varat izveidot jaunu datu bāzi MongoDB, izmantojot izmantot komanda:

use db_name

Lai gan iepriekš minētā komanda izveido jaunu datu bāzi, varat to izmantot, lai pārslēgtos uz esošu datu bāzi, neizveidojot jaunu.

2. Atmest datu bāzi

Vispirms pārslēdzieties uz datu bāzi, kuru vēlaties atmest, izmantojot izmantot komandu, kā tas tika darīts iepriekš. Pēc tam nometiet datu bāzi, izmantojot dropDatabase() komanda:

use db_name
db.dropDatabase()

3. Izveidojiet kolekciju

Lai izveidotu kolekciju, pārslēdzieties uz mērķa datu bāzi. Izmantojiet izveidot kolekciju() atslēgvārds, lai izveidotu jaunu MongoDB kolekciju:

db.createCollection("collection_name")

Aizvietot kolekcijas_nosaukums ar jūsu izvēlēto kolekcijas nosaukumu.

4. Ievietojiet dokumentu kolekcijā

Sūtot datus uz kolekciju, varat ievietot vienu dokumentu vai dokumentu masīvu.

Lai ievietotu vienu dokumentu:

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

Varat arī izmantot iepriekš minēto metodi, lai ievietotu dokumentu masīvu ar vienu ID:

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

Lai vienlaikus ievietotu daudzus dokumentus, kuriem katram ir atsevišķs ID, izmantojiet ievietotDaudzi atslēgvārds:

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

5. Iegūstiet visus dokumentus no kolekcijas

Varat vaicāt visus dokumentus no kolekcijas, izmantojot atrast () atslēgvārds:

db.collection_name.find()

Iepriekš minētais atgriež visus dokumentus norādītajā kolekcijā:

Varat arī ierobežot atgrieztos datus līdz noteiktam skaitam. Piemēram, varat izmantot šo komandu, lai iegūtu tikai pirmos divus dokumentus:

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

6. Kolekcijas dokumentu filtrēšana

Ir daudz veidu, kā filtrēt dokumentus MongoDB. Apsveriet, piemēram, šādus datus:

Ja vaicājat tikai noteiktā dokumenta laukā, izmantojiet atrast metode:

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

Iepriekš minētais atgriež visus dokumentus, kuros ir vērtība Patīk ir Wordle. Tas izvada tikai nosaukumus un ignorē dokumenta ID.

Varat arī filtrēt kolekciju pēc skaitliskā faktora. Pieņemsim, ka vēlaties iegūt visu to lietotāju vārdus, kuri ir vecāki par 21 gadu, izmantojiet $gt operators:

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

Izvade izskatās šādi:

Mēģiniet nomainīt atrast ar atrast vienu lai redzētu, kas notiek. Tomēr ir arī daudzi citi filtrēšanas atslēgvārdi:

  • $ lt: visas vērtības ir mazākas par norādīto.
  • $gte: vērtības, kas vienādas vai lielākas par norādīto.
  • $lte: vērtības, kas ir mazākas vai vienādas ar definēto.
  • $ ekvivalents: iegūst visas vērtības, kas vienādas ar norādīto.
  • $ne: visas vērtības nav vienādas ar norādīto.
  • $in: izmantojiet šo vaicājumu veikšanai, pamatojoties uz masīvu. Tas iegūst visas vērtības, kas atbilst jebkuram no masīva vienumiem. The $nin atslēgvārds darbojas pretēji.

7. Kārtot vaicājumus

Kārtošana palīdz sakārtot vaicājumu noteiktā secībā. Varat kārtot dilstošā vai augošā secībā. Ņemiet vērā, ka kārtošanai ir nepieciešama ciparu atsauce.

Piemēram, lai kārtotu augošā secībā:

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

Lai sakārtotu iepriekš minēto vaicājumu dilstošā secībā, aizstājiet "1" ar "-1".

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

8. Atjauniniet dokumentu

MongoDB atjauninājumiem atomu operatoriem ir jānorāda, kā vēlaties veikt atjaunināšanu. Šeit ir saraksts ar visbiežāk izmantotajiem atomu operatoriem, kurus varat savienot pārī ar atjaunināšanas vaicājumu:

  • $set: pievienojiet jaunu lauku vai mainiet esošu lauku.
  • $push: masīvā ievieto jaunu vienumu. Savienojiet to pārī ar $katrs operatoram, lai vienlaikus ievietotu vairākus vienumus.
  • $ pull: noņemiet vienumu no masīva. Izmantojiet to ar $in lai vienā reizē noņemtu daudzus vienumus.
  • $atiestatīts: noņemiet lauku no dokumenta.

Lai atjauninātu dokumentu un pievienotu jaunu lauku, piemēram:

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

Iepriekš norādītais dokuments tiek atjaunināts, kā parādīts:

E-pasta lauka noņemšana ir vienkārša, izmantojot $atiestatīts operators:

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

Apsveriet šādus datu paraugus:

Varat ievietot vienumu esošajā preces masīva lauks, izmantojot $push operators:

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

Šeit ir izvade:

Izmantojiet $katrs operators, lai vienlaikus ievietotu vairākus vienumus:

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

Šeit ir izvade:

Kā minēts, $ pull operators noņem vienumu no masīva:

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

Atjauninātie dati izskatās šādi:

Iekļauts $in atslēgvārds, lai vienlaikus noņemtu daudzus vienumus no masīva:

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

9. Dzēst dokumentu vai lauku

The dzēstOne vai dzēstDaudzi atslēgvārds ievieto miskastē dokumentu no kolekcijas. Izmantot dzēstOne lai noņemtu dokumentu, pamatojoties uz norādīto lauku:

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

Ja vēlaties dzēst daudzus dokumentus ar kopīgām atslēgām, izmantojiet dzēstDaudzi vietā. Tālāk sniegtais vaicājums dzēš visus dokumentus, kas satur Šahs kā viņu Patīk.

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

10. Indeksēšanas darbība

Indeksēšana uzlabo vaicājumu veiktspēju, racionalizējot MongoDB skenējamo dokumentu skaitu. Bieži vien vislabāk ir izveidot indeksu laukiem, kuros vaicājat biežāk.

MongoDB indeksēšana ir līdzīga tam, kā jūs izmantojiet indeksus, lai optimizētu SQL vaicājumus. Piemēram, lai izveidotu augošu indeksu uz Vārds lauks:

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

Lai uzskaitītu savus indeksus:

db.collection.getIndexes()

Iepriekš minētais ir tikai preambula. Ir vairākas citas metodes, lai izveidot indeksu MongoDB.

11. Apkopošana

Apkopošanas cauruļvads, uzlabota MapReduce versija, ļauj palaist un saglabāt sarežģītus aprēķinus no MongoDB iekšpuses. Atšķirībā no MapReduce, kurā ir nepieciešams rakstīt karti un samazināšanas funkcijas atsevišķi JavaScript funkcijas, apkopošana ir vienkārša un izmanto tikai iebūvētās MongoDB metodes.

Apsveriet, piemēram, šādus pārdošanas datus:

Izmantojot MongoDB apkopojumu, varat aprēķināt un saglabāt kopējo pārdoto produktu skaitu katrā kategorijā šādi:

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

Iepriekš minētais vaicājums atgriež sekojošo:

Apgūstiet MongoDB vaicājumus

MongoDB piedāvā daudzas vaicājumu metodes, tostarp funkcijas vaicājuma veiktspējas uzlabošanai. Neatkarīgi no jūsu programmēšanas valodas iepriekš minētās vaicājumu struktūras ir elementāras, lai mijiedarbotos ar MongoDB datu bāzi.

Tomēr bāzes sintaksēs var būt dažas neatbilstības. Piemēram, lai gan dažas programmēšanas valodas, piemēram, Python, atpazīst čūsku gadījumus, citas, tostarp JavaScript, izmanto kamieļu gadījuma gadījuma raksturu. Noteikti izpētiet, kas darbojas jūsu izvēlētajā tehnoloģijā.