Przejdź do głównej zawartości

MongoDB for C# developers - Lesson 1

Today I'll show you what I lerned at Mongo University online course for C# developers after first lesson and passing all homework.
I'll show you how you can:
- install MongoDB on Windows workstation
- switch between databases
- display all elements from a collection
- add new document to a collection
- restore Mongo database from a dump folder.


Get MongoDB installer from MongoDB download center:
https://www.mongodb.com/download-center

After installation of 64 bit version go to C:\Program Files\MongoDB\Server\3.4\bin.
You should see there 2 files:
-mongo - this is a console application, you can think of it as a client application
-mongod - this is a server of database

At this point it's useful to add 'C:\Program Files\MongoDB\Server\3.4\bin' to PATH environment variable.


Now open the command line and go to C drive.
Create the folder by using command:
mkdir data\db
And now run the server:
mondog
Important: If you forget adding the data\db folder then server will stop just after starting.
It's very important directory. Mongo needs it to be created because this is where Mongo stores its files including your collections.
It's important to note that data are stored by MongoDB in BSON(binary JSON) format.

Now as mongo server is running, we can run this from different window:
db.users.insert({"name" : "Dariusz Kacban" })
db.users.insert({"name" : "Someone Else" })

We simply add 2 JSON objects to "users" collection. In our example all values are strings.
Fortunately JSON allow for exactly 4 data types: string, number, array or JSON object itself.

And to confirm that 2 rows were added to the 'users' collection run this command:
db.users.find()


Useful commands after running mongo client application are available when you type in help.
The are commands like:
show dbs - show all databases
use test - use specific database
db.users.insertOne({JSON OBJECT HERE}) - if test db doesn't exist - mongo wil create it for us.
db.users.find().pretty() - display entire 'users' collection
db.users.find({"name":"Dariusz"}).pretty() - display only users with name "Dariusz"

It's worth to mention than 16MB is maximum size od a document in Mongo. It must be considered when you make a decision if to embed data in a collection or create a separate collection. This is MongoDB requirement.

Another useful function od MongoDB is: mongoestore. It helps you to restore data from dump file that you've previously created.
Example use: mongorestore dump_directory

Then you need to switch to database like this:
use database_name

then you call collections like this:
db.colelction_name.find()

One important note: expressing string in JSON demands that you use " instead of '.


That's all for today. I hope you like to learn Mongo and want to learn how to design a database in Mongo and how Mongo work in comparison to relational database like MySQL or Oracle.

If you're interested find the course and join the next edition: https://university.mongodb.com/

Komentarze

Popularne posty z tego bloga

Aplikacja 'Perfect Life' - planowanie funkcjonalności

W poprzednim wpisie przedstawiłem budowę historii użytkownika(ang. User Story). Dzisiaj korzystając z tego narzędzia zaplanujemy kilka funkcjonalności. Czas na zaplanowanie funkcjonalności aplikacji mobilnej Perfect Life. Aplikacja jest tworzona w oparciu o technologię Xamarin.Forms. Póki co jednak abstrahując od rozwiązań technologicznych skupimy się na funkcjonalnościach. Dobre planowanie swojej pracy to podstawa sukcesu każdego projektu programistycznego. US1: Jako użytkownik aplikacji mobilnej chcę ekran logowania aby mieć możliwość zapisywania swoich postępów US2: Jako użytkownik aplikacji mobilnej chcę mieć kalkulator wskaźnika BMI aby móc mierzyć poziom swojej kondycji US3: Jako użytkownik aplikacji mobilnej chcę widzieć wykresy aby móc wizualnie interpretować swoje postępy US4: Jako użytkownik aplikacji mobilnej chcę mieć możliwość rozwiązania quizu, żeby zbadać wskaźnik Body Age US5: Jako użytkownik aplikacji mobilnej chcę pobierać pliki PDF aby mieć dostęp do planó...

Dziś Premiera Visual Studio 2017

Dzisiaj ważny dzień dla programistów .NET. Premiera środowiska programistycznego Visual Studio 2017. Relację na żywo można oglądać tutaj: https://launch.visualstudio.com/ Jutro będzie dzień warsztatów, w których możemy wziąć udział online. Nowe VS możemy pobrać ze strony: https://www.visualstudio.com/ Co ciekawe pobierając VS teraz otrzymasz 60 dni darmowego dostępu do Xamarin University. To ważne jeśli chcesz się nauczyć tworzyć aplikacje mobilne. Co nowego? Lepsza integracja z VSTS Live unit testing - zwróćmy uwagę na ikony po lewej stronie: Dodatkowe ikony: Wyszukiwanie metod po fragmencie nazwy. Code suggestions, czyli podpowiedzi na temat najlepszych praktyk w trakcie pisania kodu. Możemy zdefiniować własne sugestie dot. kodu i dodac własne konfiguracje edytora kodu: Dodatkowo pojawiły się dodatkowe ikony, dzięki którym łatwo się zorientować gdzie kończy się klasa, a gdzie namespace. Wygląda to nieźle. Inne usprawnienia o których mówił Scott Hanselman...

ASP.NET Core MVC - wdrożenie na Linuxie krok po kroku

Dzisiaj skupimy się na wdrożeniu aplikacji ASP.NET Core MVC. Po przeczytaniu tego artykułu będziesz potrafił uruchomić swoją pierwszą aplikację ASP.NET Core na maszynie wirtualnej z systemem Ubuntu 14. Załóżmy, że mamy nasza aplikację gotową i chcemy ją uruchomić. Jak najłatwiej to zrobić? Podczas debugowania możemy roboczo wykorzystać Visual Studio do uruchomienia aplikacji na IIS Express. Jednak w warunkach produkcyjnych kiedy chcemy wdrożyć aplikację na systemie Linux, musimy poszukać innego rozwiązania. Dlaczego? Bo Linux nie będzie obsługiwał ani visual Studio ani IIS Express, ponadto jeśli korzystamy z Continuous Deployment, to chcemy wdrożenie robić z poziomu konsoli. Jak pisałem w poprzednich postach, wraz z nadejściem ASP.NET Core MVC, mamy możliwość wdrażania aplikacji napisanych w C# na platformie Linux. To niezwykle istotne, bo przynosi ogromne korzyści, choćby dlatego, że ceny hostingu są kilka razy niższe dla maszyn z Linuxem niż z Windowsem. 1) Framework-depen...