Сазнајте више о МонгоДБ упитима и операцијама уз помоћ овог практичног водича.

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

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

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

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

use db_name

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

instagram viewer

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

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

use db_name
db.dropDatabase()

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

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

db.createCollection("collection_name")

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

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})

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

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

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

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. Операција индексирања

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

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

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"}}])

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

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

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

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