11 МонгоДБ упита и операција које морате знати

МонгоДБ је једна од најпожељнијих и најцењенијих НоСКЛ база података за професионални развој. Његова флексибилност, скалабилност и способност руковања великим количинама података чине га врхунским избором за модерне апликације. Ако желите да овладате редовним упитима и операцијама МонгоДБ-а, на правом сте месту.

МУО ВИДЕО ДАНА

ПОМЕРИТЕ ДА БИСТЕ НАСТАВИЛИ СА САДРЖАЈЕМ

Без обзира да ли желите да ефикасно преузимате и манипулишете подацима, имплементирате робусне моделе података или правите апликације које реагују, стицање дубоког разумевања уобичајених МонгоДБ упита и операција ће несумњиво побољшати ваше вештине.

1. Креирајте или промените базе података

Локално креирање базе података преко МонгоДБ Схелл-а је једноставно, посебно ако сте подесили удаљени кластер. Можете креирати нову базу података у МонгоДБ помоћу команде усе:

 use db_name 

Док горња команда креира нову базу података, можете је користити за прелазак на постојећу базу података без креирања нове од нуле.

2. Испустите базу података

Прво, пређите на базу података коју желите да испустите користећи команду усе као што је претходно урађено. Затим испустите базу података помоћу команде дропДатабасе():

 use db_name
db.dropDatabase()

3. Направите колекцију

Да бисте креирали колекцију, пређите на циљну базу података. Користите кључну реч цреатеЦоллецтион() да направите нову МонгоДБ колекцију:

 db.createCollection("collection_name")

Замените цоллецтион_наме са именом ваше колекције.

  Најбоље ВР слушалице у 2023

4. Уметните документ у колекцију

Док шаљете податке у колекцију, можете уметнути један документ или низ докумената.

Да бисте уметнули један документ:

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

Такође можете користити горњи метод да убаците низ докумената са једним ИД-ом:

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

Да бисте убацили више докумената одједном, од којих сваки има засебне ИД-ове, користите кључну реч инсертМани:

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

5. Преузмите све документе из колекције

Можете да тражите све документе из колекције користећи кључну реч финд():

 db.collection_name.find()

Горе наведено враћа све документе унутар наведене колекције:

Такође можете ограничити враћене податке на одређени број. На пример, можете користити следећу команду да бисте добили само прва два документа:

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

6. Филтрирајте документе у колекцији

Постоји много начина за филтрирање докумената у МонгоДБ-у. Узмите у обзир следеће податке, на пример:

Ако тражите само одређено поље у документу, користите метод проналажења:

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

Горе наведено враћа све документе у којима је вредност лајкова Вордле. Само излази имена и игнорише ИД документа.

Такође можете филтрирати колекцију по нумеричком фактору. Рецимо да желите да добијете имена свих корисника старијих од 21 године, користите оператор $гт:

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

Излаз изгледа овако:

Покушајте да замените финд са финдОне да видите шта се дешава. Међутим, постоји много других кључних речи за филтрирање:

  • $лт: Све вредности мање од наведене.
  • $гте: Вредности једнаке или веће од наведене.
  • $лте: Вредности које су мање или једнаке дефинисаној.
  • $ек: Добија све вредности једнаке наведеној.
  • $не: Све вредности нису једнаке наведеној.
  • $ин: Користите ово када постављате упите на основу низа. Добија све вредности које одговарају било којој од ставки у низу. $нин кључна реч ради супротно.
  Како играти Легион ТД 2 на Линуку

7. Сортирање упита

Сортирање помаже да се упит уреди одређеним редоследом. Можете сортирати у опадајућем или растућем редоследу. Имајте на уму да сортирање захтева нумеричку референцу.

На пример, да сортирате у растућем редоследу:

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

Да бисте сортирали горњи упит у опадајућем редоследу, замените „1“ са „-1“.

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

8. Ажурирајте документ

Ажурирања МонгоДБ-а захтевају од атомских оператора да наведу како желите да се ажурирање изврши. Ево листе најчешће коришћених атомских оператора које можете упарити са упитом за ажурирање:

  • $сет: Додајте ново поље или промените постојеће поље.
  • $пусх: Уметните нову ставку у низ. Упарите га са оператором $еацх да бисте убацили више ставки одједном.
  • $пулл: Уклоните ставку из низа. Користите га са $ин да бисте уклонили много ставки одједном.
  • $унсет: Уклоните поље из документа.

Да бисте ажурирали документ и додали ново поље, на пример:

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

Горе наведено ажурира наведени документ као што је приказано:

Уклањање поља е-поште је једноставно помоћу оператора $унсет:

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

Узмите у обзир следеће узорке података:

Можете да убаците ставку у поље постојећег низа ставки помоћу оператора $пусх:

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

Ево излаза:

Користите оператор $еацх да убаците више ставки одједном:

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

Ево излаза:

Као што је поменуто, $пулл оператор уклања ставку из низа:

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

Ажурирани подаци изгледају овако:

Укључите кључну реч $ин да бисте уклонили многе ставке у низу одједном:

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

9. Избришите документ или поље

Кључна реч делетеОне или делетеМани одбацује документ из колекције. Користите делетеОне да уклоните документ на основу наведеног поља:

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

Ако желите да избришете много докумената са заједничким кључевима, уместо тога користите делетеМани. Упит испод брише све документе који садрже шах као лајкове.

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

10. Операција индексирања

Индексирање побољшава перформансе упита поједностављујући број докумената које МонгоДБ треба да скенира. Често је најбоље креирати индекс за поља која чешће постављате упите.

  Контејнери против виртуелних машина: Објашњење разлика [2023]

МонгоДБ индексирање је слично начину на који користите индексе за оптимизацију СКЛ упита. На пример, да бисте креирали растући индекс у пољу Име:

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

Да бисте навели своје индексе:

 db.collection.getIndexes()

Горе наведено је само преамбула. Постоји неколико других метода за креирање индекса у МонгоДБ.

11. Агрегација

Агрегациони цевовод, побољшана верзија МапРедуце-а, омогућава вам да покрећете и чувате сложене прорачуне из МонгоДБ-а. За разлику од МапРедуце-а, који захтева писање мапе и функције редукције у засебним ЈаваСцрипт функцијама, агрегација је једноставна и користи само уграђене МонгоДБ методе.

Узмите у обзир следеће податке о продаји, на пример:

Користећи МонгоДБ-ову агрегацију, можете израчунати и ускладиштити укупан број продатих производа за сваку категорију на следећи начин:

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

Горњи упит враћа следеће:

Мастер МонгоДБ упити

МонгоДБ нуди многе методе упита, укључујући функције за побољшање перформанси упита. Без обзира на ваш програмски језик, горе наведене структуре упита су рудиментарне за интеракцију са МонгоДБ базом података.

Ипак, могу постојати нека неслагања у основној синтакси. На пример, док неки програмски језици као што је Питхон препознају случајеве змије, други, укључујући ЈаваСцрипт, користе случај камила. Обавезно истражите шта ради за одабрану технологију.