MongoDB. Narzędzia, transakcje, referencje

Podobne dokumenty
MongoDB - pomoc do laboratorium

MongoDB. Narzędzia i biblioteki

MongoDB. wprowadzenie. dr inż. Paweł Boiński, Politechnika Poznańska

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Leonard G. Lobel Eric D. Boyd. Azure SQL Database Krok po kroku. Microsoft. Przekład: Marek Włodarz. APN Promise, Warszawa 2014

PHP: bazy danych, SQL, AJAX i JSON

dziennik Instrukcja obsługi

Część I Tworzenie baz danych SQL Server na potrzeby przechowywania danych

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

CouchDB. Michał Nowikowski

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Część I Rozpoczęcie pracy z usługami Reporting Services

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

NoSQL Not Only SQL, CouchDB. I.Wojnicki, NoSQL. Apache CouchDB has started. Time to relax. Igor Wojnicki

Szczegółowy opis przedmiotu umowy. 1. Środowisko SharePoint UWMD (wewnętrzne) składa się z następujących grup serwerów:

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

Problemy techniczne SQL Server

Usługi analityczne budowa kostki analitycznej Część pierwsza.

Projektowanie systemów baz danych

Hurtownie danych wykład 5

Tomasz Grześ. Systemy zarządzania treścią

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Typy tabel serwera MySQL

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Podstawowe wykorzystanie Hibernate

Aplikacje webowe z wykorzystaniem Node.js oraz Express

Problemy techniczne SQL Server

Analityka danych w środowisku Hadoop. Piotr Czarnas, 27 czerwca 2017

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Wykład 5: PHP: praca z bazą danych MySQL

Wdrożenie modułu płatności eservice. dla systemu Magento

Zmiana treści Specyfikacji Istotnych Warunków Zamówienia.

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Oracle11g: Wprowadzenie do SQL

OpenOfficePL. Zestaw szablonów magazynowych. Instrukcja obsługi

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Oracle Application Express -

Programowanie Komponentowe WebAPI

Backend Administratora

Paweł Rajba

Zastępstwa Optivum. Jak przenieść dane na nowy komputer?

Aplikacje WWW - laboratorium

Automatyczna instalacja oprogramowania.

Zmiana treści Specyfikacji Istotnych Warunków Zamówienia.

Sprawozdanie. (notatki) Sieci komputerowe i bazy danych. Laboratorium nr.3 Temat: Zastosowanie protokołów przesyłania plików

git krótki przewodnik

William R. Stanek. Vademecum administratora. Microsoft. SQL Server Przekład: Krzysztof Szkudlarek

Microsoft SQL Server Podstawy T-SQL

Podstawy technologii WWW

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań,

Viatoll Calc v1.3. Viatoll Calc. Instrukcja użytkownika. Strona 1

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Tworzenie zapytań do Microsoft SQL Server

EXSO-CORE - specyfikacja

Odpowiedź II wyjaśnienie na zapytania do Specyfikacji Istotnych Warunków Zamówienia.

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Szczegółowy opis zamówienia:

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

Administracja bazami danych

Wybrane działy Informatyki Stosowanej

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

ActiveXperts SMS Messaging Server

Ćwiczenia 2 IBM DB2 Data Studio

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Uruchamianie bazy PostgreSQL

MS Windows Vista. Spis treści. Autor: Jacek Parzonka, InsERT

Deduplikacja danych. Zarządzanie jakością danych podstawowych

Przetwarzanie danych w chmurze

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

Dane wejściowe. Oracle Designer Generowanie bazy danych. Wynik. Przebieg procesu

AE/ZP-27-16/14. Oprogramowanie do wykonywania kopii zapasowych oraz zarządzania maszynami wirtualnymi

Aplikacje WWW - laboratorium

Autor: Joanna Karwowska

RFP. Wymagania dla projektu. sklepu internetowego B2C dla firmy Oplot

Baza danych sql. 1. Wprowadzenie

Instalacja SQL Server Konfiguracja SQL Server Logowanie - opcje SQL Server Management Studio. Microsoft Access Oracle Sybase DB2 MySQL

Problemy techniczne SQL Server. Zarządzanie bazami danych na serwerze SQL

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Organizacyjnie. Prowadzący: dr Mariusz Rafało (hasło: BIG)

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento 2 (plugin dostępny w wersji ecommerce)

Wykład 8. SQL praca z tabelami 5

BIURO USŁUG INFORMATYCZNYCH "T-SOFT"

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Bazy danych. Dr inż. Paweł Kasprowski

Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych. Paweł Paduch paduch@tu.kielce.pl

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja wielokrotna)

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Analityka danych w środowisku Hadoop. Piotr Czarnas, 5 czerwca 2017

Splunk w akcji. Radosław Żak-Brodalko Solutions Architect Linux Polska Sp. z o.o.

Szkolenie autoryzowane. MS 6232 Wdrażanie bazy danych Microsoft SQL Server 2008 R2

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Transkrypt:

ongodb. Narzędzia, transakcje, referencje 1/73 MongoDB. Narzędzia, transakcje, referencje Technologie Zarządzania Treścią dr inż. Robert Perliński rperlinski@icis.pcz.pl Politechnika Częstochowska Instytut Informatyki Teoretycznej i Stosowanej 2 grudnia 2017

MongoDB. Narzędzia, transakcje, referencje 2/73 Plan prezentacji 1 MongoDB 2 MongoDB shell 3 Narzędzia administracyjne od twórców MongoDB darmowe od innych dostawców komercyjne do przeglądania danych 4 Referencje w MongoDB 5 Zapytania z polami tablic 6 Transakcje 7 Źródła

MongoDB. Narzędzia, transakcje, referencje 3/73 Importowanie danych do MongoDB Importowanie danych zawartych w plikach JSON poleceniem mongoimport Przykład: mongoimport --db test --collection restaurants --drop --file restaurants-dataset.json Polecenie mongoimport: wstawia dokumenty do bazy test, do kolekcji restaurants, jeśli kolekcja restauracje już istaniała to zostanie usunięta: --drop, dane zawarte w pliku restaurants-dataset.json, parametr --file, dane w pliku to lista dokumentów nie oddzielonych przecinkiem, łączy się z mongod uruchomionym na localhost, port 27017, parametry --host i --port w razie potrzeby.

MongoDB. Narzędzia, transakcje, referencje 4/73 Exportowanie danych z MongoDB Exportowanie danych znajdujących się w bazie MongoDB mongoexport Przykład: mongoexport --db test --collection restaurants --query '{"dzielnica":"bronx"}' --fields dzielnica,adres --out bronxrestaurants.json Polecenie mongoexport: zapisuje kolekcję restaurants z bazy test w pliku tekstowym, dane zapisywane są w pliku bronxrestaurants.json, parametr --out, (domyślnym formatem jest JSON), parametr --query pozwala wprowadzić zapytanie w formacie JSON ograniczające liczbę dokumentów pobranych z kolekcji, parametr --fields pozwala określić, które pola dokumentu mają być eksportowane, łączy się z mongod uruchomionym na localhost, port 27017, parametry --host i --port w razie potrzeby.

MongoDB. Narzędzia, transakcje, referencje 5/73 MongoDB shell (mongo) MongoDB shell: interakcyjne narzędzie dla MongoDB, interfejs w JavaScript, składowy komponent pakietu MongoDB, pozwala na pobieranie, aktualizację danych, operacje administracyjne, uruchamiane poleceniem mongo, domyślnie łączy się z localhost na porcie 27017, instancja MongoDB musi być uruchomiona, zawiera polecenie help, klawisz <tab> dopełnia polecenia.

MongoDB. Narzędzia, transakcje, referencje 6/73 Wybrane polecenia w mongo shell I Polecenia w mongo: help - wyświetla pomoc, klawisz TAB dopełnia polecenia, show dbs - wyświetla listę baz, use test - przełącza na bazę test, show collections - wyświetla listę kolekcji, db.help() - wyświetla listę dostępnych metod dla bazy danych, db.dropdatabase() - uwuwa bieżącą bazę danych, db.getname() - wyświetla nazwę bieżącej bazy, db.stats() - wyświetla statystyki bieżącej bazy, db.hostinfo() - informacje o serwerze, db.version() - wyświetla wersję serwera.

MongoDB. Narzędzia, transakcje, referencje 7/73 Wybrane polecenia w mongo shell II Polecenia w mongo: db.osoby.help() - wyświetla listę dostępnych metod dla kolekcji osoby, db.osoby.count() - wyświetla liczbę dokumentów w kolekcji, db.osoby.find() - wyświetla zawartość kolekcji osoby, db.osoby.find({"imie":"wojciech"}) zwraca te dokumenty, które spełniają warunek, db.osoby.remove() - usuwa dokumenty z kolekcji, db.osoby.drop() - usuwa kolekcję osoby z bazy danych, db.osoby.insert({ "imie": "Wojciech", "nazwisko": "Paluch", "dataur": "1985/07/14", "kraj": "Polska" }) - wstawia dane do kolekcji, db.osoby.getindexes() - wyświetla informacje o indeksach kolekcji osoby.

MongoDB. Narzędzia, transakcje, referencje 8/73 Część listy poleceń dla kolekcji Polecenie db.osoby.help(): db.osoby.find().help() - show DBCursor help db.osoby.count() db.osoby.copyto(newcoll) - duplicates collection by copying all documents to newcoll db.osoby.converttocapped(maxbytes) - calls {converttocapped:'osoby', size:maxbytes}} command db.osoby.datasize() db.osoby.distinct( key ) - e.g. db.osoby.distinct( 'x' ) db.osoby.drop() drop the collection db.osoby.dropindex(index) - e.g. db.osoby.dropindex("indexname") or db.osoby.dropindex( {"indexkey" : 1} ) db.osoby.dropindexes() db.osoby.ensureindex(keypattern[,options]) db.osoby.find(...).count() db.osoby.find(...).limit(n) db.osoby.find(...).skip(n) db.osoby.find(...).sort(...) db.osoby.findone([query]) db.osoby.findandmodify( { update :..., remove : bool [, query: {}, sort: {}, 'new': false] } ) db.osoby.getdb() get DB object associated with collection db.osoby.getindexes() db.osoby.group( { key :..., initial:..., reduce :...[, cond:...] } ) db.osoby.insert(obj) db.osoby.mapreduce( mapfunction, reducefunction, <optional params> ) db.osoby.remove(query) db.osoby.renamecollection( newname, <droptarget> ) renames the collection. db.osoby.runcommand( name, <options> ) runs a db command with the given name db.osoby.save(obj) db.osoby.stats() db.osoby.storagesize() - includes free space allocated to this collection db.osoby.totalindexsize() - size in bytes of all the indexes db.osoby.totalsize() - storage allocated for all data and indexes db.osoby.update(query, object[, upsert_bool, multi_bool])

MongoDB. Narzędzia, transakcje, referencje 9/73 Przykładowa metoda dla kolekcji osoby Polecenie db.osoby.stats() zwraca: { "ns" : "test.osoby", "count" : 50, "size" : 24608, "avgobjsize" : 492.16, "storagesize" : 28672, "numextents" : 1, "nindexes" : 1, "lastextentsize" : 28672, "paddingfactor" : 1, "systemflags" : 1, "userflags" : 0, "totalindexsize" : 8176, "indexsizes" : { "_id_" : 8176 }, "ok" : 1 }

MongoDB. Narzędzia, transakcje, referencje 10/73 Polecenia systemowe w mongo shell Polecenia systemowe w mongo shell: ls() - lista zawartości bieżącego katalogu jako tablica JSON, listfiles() - lista zawartości bieżącego katalogu, jako tablia JSON, każde pole to obiekt (nazwa, wielkość, czy jest katalogiem), pwd() - pokazje bieżący katalog, cd() - zmiana katalogu, np. cd("pulpit"), cd(".."), cat() - wyświetla zawartość pliku, np. cat("plik.json"), mkdir() - tworzy katalog, np. mkdir("templates"), removefile() - usuwa plik, katalog, np. removefile("abc.json"), exit, quit() - wyłącza mongo shell.

MongoDB. Narzędzia, transakcje, referencje 11/73 Skrypty w mongo shell Skrypty w mongo shell: korzystają z poleceń mongo shell i języka JavsScript, uruchamiamy z terminala: mongo [--quiet] < skrypt.js Przykład 1: skrypt.js use lab06 print('liczba dokumentów w kolekcji osoby, polecenie:'); db.osoby.count() Przykład 2: skrypt.js - wykorzystanie języka JavaScript print('nazwy wszystkich osób z kolekcji'); var cursor = db.osoby.find( {}, {_id:0,nazwa:1} ) while (cursor.hasnext()) { print(tojson(cursor.next())); }

MongoDB. Narzędzia, transakcje, referencje 12/73 Narzędzia dla bazy MongoDB Serwer MongoDB nie dostarcza narzędzia z GUI do zarządzania danymi czy ich przeglądania. Wszystkie operacje na bazie wykonuje się z wykorzytaniem mnogo shell. Narzędzi dla MongoDB jest bardzo dużo. Niektóre są komercyjne, inne darmowe, tworzone przez społeczności. Nietkóre służą do administracji, inne do przeglądania danych.

MongoDB. Narzędzia, transakcje, referencje 13/73 Narzędzia dostarczone przez zespół MongoDB MongoDB Compass (dostępne na Windows, RedHat i Ubuntu, Mac OS): graficzny przegląd danych, wykonywanie operacji CRUD na danych, szczegółowe informacje o indeksach, wykonywanie zapytań ad hoc, wyświetla graficzne plany wykonania zapytania aby ułatwić poprawę jego wydajności.

MongoDB. Narzędzia, transakcje, referencje 14/73 Narzędzia dostarczone przez zespół MongoDB MongoDB Atlas (hosting MongoDB od twórców bazy), GUI pozwala na: użycie bazy danych jako usługi, konfigurację i zarządzanie klastrem, skalowanie z automatycznym współdzieleniem, monitorowanie wykorzystania bazy uruchomionej w MongoDB Atlas, zarządzanie kopiami bezpieczeństwa i odzyskiwanie danych, konfigurowanie zabezpieczeń.

MongoDB. Narzędzia, transakcje, referencje 15/73 Narzędzia dostarczone przez zespół MongoDB MongoDB Cloud Manager: platforma do zarządzania MongoDB, działa w chmurze, monitorowanie wykorzystania baz i ustawianie określonych ostrzeżeń, automatyzacja ustawiania bazy i zarządzania nią, wizualizacja wydajności zapytań i wygodniejsze ich optymalizowanie, zarządzanie procesem automatyzacji wykonywania kopii bezpieczeństwa i odzyskiwania danych.

MongoDB. Narzędzia, transakcje, referencje 16/73 Narzędzia dostarczone przez zespół MongoDB MongoDB Stitch - pozwala na wykorzystanie bazy MongoDB jako backendu w roli usługi, konfigurujemy bakcend naszej aplikacji w chmurze, MongoDB Connector for BI (Business Intelligence) - podłączenie danych z bazy MongoDB do platformy analizy danych, do hurtowni danych (proces ETL), Ops Manager - narzędzie do zarządzania MongoDB w centrum danych (monitorowanie, automatyzacja aktualizacji czy zarządzania indeksami, tworzenie backupu, optymalizacja zapytań), MongoDB Connector for Apache Spark - pozwala na podłączenie danych z MongoDB do Apache Spark i używanie wszystkich jego bibliotek (narzędzia analityczne: zapytania w SQL, uczenie maszynowe, przetwarzanie grafów, strumieniowanie danych).

MongoDB. Narzędzia, transakcje, referencje 17/73 Darmowe narzędzia innych dostawców Mongoclient - przeglądanie danych, wsparcie przy tworzeniu zapytań, statystyki bazy mongo-express - przeglądanie i modyfikowanie danych adminmongo - działające w przeglądarce, napisane w Node.js Edda - wizualizacja logów, raczej nam się nie przyda Fluentd - narzędzie do zarządzania logami, ma integrację z MongoDB (logi są zapisywane w MongoDB) HumongouS.io - interfejs użytkownika bazy MongoDB w przeglądarce - warto sprawdzić, działa online, zakłada się konto i już, ładnie wygląda Fang of Mongo - interfejs do MongoDB w przeglądarce, chyba tylko przeglądanie danych

MongoDB. Narzędzia, transakcje, referencje 18/73 Darmowe narzędzia innych dostawców MongoHub - GUI do MongoDB pod OSX, wydaje się fajne ale nie było jak przetestować MongoVision - narzędzie do zarządzania MongoDB, działa w przeglądarce, chyba tylko do przeglądania danych MongoVUE - GUI do MongoDB napisane w.net Mongo Explorer - plugin do WebStorm NoSQL Manager for MongoDB - porządne narzędzie komercyjne, 30-dniowy trial, tylko na Windows mviewer - proste narzędzie administracyjne do MongoDB

MongoDB. Narzędzia, transakcje, referencje 19/73 Darmowe narzędzia innych dostawców PHPMoAdmin - narzędzie do administracji MongoDB napisane w PHP (tylko jeden plik) PHPmongoDB - zarządznie MongoDB w przeglądarce, napisane w PHP RockMongo - program do zarządzania MongoDB, napisany w PHP, instalka zawiera jakieś wirusy... Genghis - samodzielny program działający w przeglądarce, na bazie Ruby albo PHP, bardzo prosta funkcjonalność Meclipse - plugin do Eclipse Humongous - przeglądarka danych z MongoDb napisana w Ruby MongoDB ODA plugin for BIRT - plugin do Eclipse mongobird - z jakiejść chińskiej strony, nie udało się pobrać mongoowl - j.w. (nie udało się pobrać) Robomongo - dość proste ale wygodne GUI do zarządzania bazą MongoDB, jest zbudowane wokół mnogo shell

MongoDB. Narzędzia, transakcje, referencje 20/73 Darmowe narzędzia innych dostawców Toad Mac Edition - narzędzie do pracy z bazami danych, tutaj werjs na Mac OS, która uwzględnia też MongoDB Opricot - GUI napisne w PHP do obsługi MongoDB Moa(db) - GUI działające w przeglądarce napisane w PHP... trzeba mieć serwer PHP postawiony MongoApp - pozwala na uruchomienie MongoDB z wykorzystaniem graficznego interfejsu, działa na Mac OS Mongri - interfejs do obsługi MongoDB w przeglądarce, wykorzystuje Node.js, nic wyjątkowego MongoCMS - panel administratora dla systemów CMS napisany do użycia z MongoDB i Node.js NoSQL Viewer - tylko na windows, pozwala na przeglądanie danych ale na różne sposoby, wiele różnych baz NoSQL

MongoDB. Narzędzia, transakcje, referencje 21/73 Robo 3T (dawniej Robomongo) - przegląd i edycja danych Funkcjonalność podobna do mongo shell ale dobrze przygotowany przegląd danych (na trzy sposoby), możliwość łatwej edycji danych, wygodny wybór baz i kolekcji

MongoDB. Narzędzia, transakcje, referencje 22/73 Narzędzia komercyjne Studio 3T (Free Edition) - wcześniej MongoChef Core, najlepsze narzędzie jakie znalazłem Database Master - potężne i zrozbudowane narzędzie ale działa w.net czyli generalnie na Windows, trial działa 30 dni DbSchema - tylko na 15 dni, napisane w Javie, generuje schematy modeli danych do chyba wszystkich baz dostępnych na rynku, rozbudowane i na pewno użyteczne narzędzie... MongoDBPumper for Oracle - transfer danych między Oracle i MongoDB json Studio - komercyjne, nie ma wersji trialowej,... MongoBooster - fajne narzędzie, rozbudowane, ma darmową wersję, warto zainstalować MongoMonitor - połączenie z bazą MongoDB z iphone Mongo Management Studio - Community Edition - fajne narzędzie, działa w przeglądarce, wykorzystuje Node.js, ładne graficznie

MongoDB. Narzędzia, transakcje, referencje 23/73 MongoChef Core Studio T3 (Free Edition) - super narzędzie, warto się tym pobawić bardzo wygodny przegląd danych importowanie i eksportowanie w JSON i CSV bardzo wygodne wprowadzanie zapytań łącznie z możliwością ich graficzengo utworzenia walidacja poprawności wprowadzanych zapytań wsparcie do pracy z narzędziem mongo shell darmowa wersja do użytku niekomercyjnego statystyki wykorzystania serwera

MongoDB. Narzędzia, transakcje, referencje 24/73 MongoChef Core - przegląd danych, zapytania Lista baz i kolekcji, indeksy, zapytania z projekcją, sortowaniem i limitem

MongoDB. Narzędzia, transakcje, referencje 25/73 MongoChef Core - graficzne budowanie zapytań Mamy możliwość budowania zapytania z pomocą graficznego narzędzia

MongoDB. Narzędzia, transakcje, referencje 26/73 MongoChef Core - graficzne budowanie zapytań Ładny i czytelny przeląd statystyk serwera

MongoDB. Narzędzia, transakcje, referencje 27/73 MongoChef Core - graficzne budowanie zapytań Wsparcie dla strumienia agregacji

MongoDB. Narzędzia, transakcje, referencje 28/73 MongoBooster I Lista baz, kolekcji i indeksów, różny sposób przeglądania dokumentów

MongoDB. Narzędzia, transakcje, referencje 29/73 MongoBooster II Statystyki serwera, analiza statystyczna kolekcji, inmortowanie, eksportowanie, podgląd dokumentów w formacie JSON,...

MongoDB. Narzędzia, transakcje, referencje 30/73 Narzędzia do przeglądania danych Narzędzia do przeglądania danych: Mongs (http://whit537.org/mongs/), działa w przeglądarce vulture (sęp), działa w przeglądarce

MongoDB. Narzędzia, transakcje, referencje 31/73 Mongs - przeglądanie danych Mongs: adres: http://whit537.org/mongs/), do przelądania danych, działa w przeglądarce, na porcie 29017, napisana w języku python (framework Aspen), instalacja: $ git clone https://github.com/whit537/mongs.git $ cd mongs $ make run adres w przeglądarce: http://localhost:29017/ zapytania: http://localhost:29017/localhost/test/restaurants//3/ http://localhost:29017/localhost/test/restaurants/{"dzielnica":"queens"}/3/ http://.../restaurants/{"dzielnica":"queens","sort":[["jedzenie",-1]]}/1/

mongs - przeglądanie danych MongoDB. Narzędzia, transakcje, referencje 32/73

MongoDB. Narzędzia, transakcje, referencje 33/73 Vulture - przeglądanie danych Vulture: adres: https://github.com/didiercrunch/vulture, zaawansowane narzędzie do przelądania danych w interfejsie webowym (przeglądarka), domyślnie działa na porcie 8000, zainspirowany projektem mongs ale ma więcej funkcji, napisany w języku Go, wspiera indeksy GeoJson, pokazuje proste statystyki, udostępnia dane również po REST API, pozwala na łatwe filtrowanie danych, wspiera strumień agregacji z MongoDB, instalacja: ściąga się paczkę, rozpakowuje i uruchamia dane binarne.

Vulture - przeglądanie danych MongoDB. Narzędzia, transakcje, referencje 34/73

Vulture - przegląd wybranych pól MongoDB. Narzędzia, transakcje, referencje 35/73

MongoDB. Narzędzia, transakcje, referencje 36/73 Vulture - REST API Dane dostępne w formacie JSON (REST API), przykład dla adresu: http://localhost:8000/api/vulture%20example/vulture_example/persons/idx/0 {"document":{ "_id":"54531ba74f495b15ca8c3a4c", "address":"7881 Jewess Meadows Suite 834\nNorth Emmett, MA 77794", "birthdate":"2005-12-31", "height":138.35304345543832, "i":7550, "mail":"tschuster@gmail.com", "name":"rettie Hilpert", "position":{"coordinates":[-94.17857052555986,45.79015141455442], "type":"point"}, "sex":"f", "username":"inez40"}, "enlapsed_time":0.812593514, "meta":{ "count":10000,"indexes":[ {"keys":["_id"],"name":"_id_","unique":false}, {"keys":["$2dsphere:position"], "name":"position_2dsphere","unique":false}]} }

Vulture - statystyki MongoDB. Narzędzia, transakcje, referencje 37/73

Vulture - dane przestrzenne - OpenStreetMap MongoDB. Narzędzia, transakcje, referencje 38/73

Vulture - potok agregacji MongoDB. Narzędzia, transakcje, referencje 39/73

MongoDB. Narzędzia, transakcje, referencje 40/73 Rerferencje w MongoDB I MongoDB: nie wspiera złączeń, dane są zdenormalizowane, przechowywane z powiązanymi danymi w jednym dokumencie (nie ma potrzeby złączeń), w pewnych przypadkach sensowne jest przechowywanie powiązanych informacji w innych dokumentach (w innych kolekcjach, innych bazach danych). Dwa rodzaje przechowywania powiązań: proste referencje, ręcznie tworzone (ang. manual references) zapisujemy wartość pola _id jednego dokumentu w innym dokumencie co tworzy nam referencję, dodatkowe zapytanie pozwala nam pobrać powiązany referencją dokument, są proste i wystarczają w większości przypadków,

MongoDB. Narzędzia, transakcje, referencje 41/73 Rerferencje w MongoDB II DBRefs łączą dwa dokumenty z różnych kolekcji, a nawet różnych baz danych, używają wartości pola _id, nazwy kolekcji i opcjonalnie nazwy bazy danych, pozwala na prostsze łączenie dokumentów z jednej kolekcji z dokumentami z wielu różnych kolekcji, uzyskanie dostępu do dołączonego dokumentu wymaga dodatkowego zapytania pobierającego dołączony dokument, wiele bibliotek zawiera metody, które automatycznie tworzą zapytanie na bazie DBRefs, dostarcza wspólny format i typ reprezentujący połączenia między dokumentami, dostarcza wspólną semantykę reprezentacji połączeń między dokumentami jeśli baza danych musi komunikować się z wieloma szabonami aplikacji czy narzędziami. DBRefs używamy tylko w razie konieczności. Kiedy tylko to możliwe używamy prostych referencji.

MongoDB. Narzędzia, transakcje, referencje 42/73 Proste rerferencje Przykład dwóch kolekcji: miejsca i ludzie id = ObjectId(); db.miejsca.insert({ "_id": id, "nazwa": "Zielona Góra", "url": "http://www.zielona-gora.pl/" }) db.ludzie.insert({ "imie": "Matylda", "nazwisko": "Barańska", "pochodzenie": id }) Zapytanie do kolekcji ludzie zwraca id miejsca ich pochodznia. W razie potrzeby można te dane uzyskać kolejnym zapytaniem.

MongoDB. Narzędzia, transakcje, referencje 43/73 Proste rerferencje - dostęp do danych Pierwsze i drugie zapytanie z wynikami: db.ludzie.findone({imie:"matylda", nazwisko:"barańska"}) { "_id" : ObjectId("583c1ba1c35740bad326fb36"), "imie" : "Matylda", "nazwisko" : "Barańska", "pochodzenie" : ObjectId("583c1b9dc35740bad326fb35") } db.miejsca.findone({"_id":objectid("583c1b9dc35740bad326fb35")}) { "_id" : ObjectId("583c1b9dc35740bad326fb35"), "nazwa" : "Zielona Góra", "url" : "http://www.zielona-gora.pl/" }

MongoDB. Narzędzia, transakcje, referencje 44/73 Proste rerferencje - użycie Proste referencje: wykorzystujemy w prawie każdym przypadku, są używane zawsze, kiedy tylko wystarczają, łatwo się je tworzy, tworzone aplikacje łatwo sobie radzą z takimi referencjami. Ograniczenia Proste referencje nie przechowują nazwy kolekcji i bazy danych. Jeśli dokumenty z jednej kolekcji mają referencje na dokumenty więcej niż jednej kolekcji to można rozwazyć wykorzystanie DBRefs.

MongoDB. Narzędzia, transakcje, referencje 45/73 DBRefs DBRefs: to pewna konwencja reprezentacji dokumentów bardziej niż jakiś typ referencyjny, zawierają wartość pola _id dokumentu, nazwę kolekcji, nazwę bazy danych (w pewnych przypadkach), składają się z następujących pól: $ref - przechowuje nazwę kolekcji docelowego dokumentu, $id - przechowuje wartość pola _id docelowego dokumentu, $db - pole opcjonalne, przechowuje nazwę bazy danych z docelowym dokumentem, tylko niektóre sterowniki obsługują to pole. { "$ref" : <value>, "$id" : <value>, "$db" : <value> }

MongoDB. Narzędzia, transakcje, referencje 46/73 DBRefs - przykład Dodajemy pole znajomi (tablica) do kolekcji ludzie, które zawiera referencje do dokumentów z kolekcji osoby z bazy test. { } "_id" : ObjectId("583c1ba1c35740bad326fb36"), "imie" : "Matylda", "nazwisko" : "Barańska", "pochodzenie" : ObjectId("583c1b9dc35740bad326fb35"), "znajomi" : [ DBRef("osoby", ObjectId("566893bd2ae04f8923cb23c3"), "test") ] Kolejność pól w DBRefs ma znaczenie, nie można jej zmieniać. Nie wszystkie sterowniki mają wsparcie dla DBRefs. W niektórych trzeba przechodzić po referencjach ręcznie. Sterownik do Node.js wspiera DBRefs. Używamy klasy DBRefs i metody dereference.

MongoDB. Narzędzia, transakcje, referencje 47/73 Kilka instrukcji z DBRefs Dostęp do pól w DBRef: var zn = db.ludzie.findone( {"znajomi.$id":objectid("566893bd50873fdd7adc45a8")} ).znajomi[0] // DBRef("osoby", ObjectId("566893bd50873fdd7adc45a8")) zn // osoby 566893bd50873fdd7adc45a8 lab06 print(zn.$ref + " " + zn.$id + " " + zn.$db) db2 = db.getsiblingdb(zn.$db); coll = db2.getcollection(zn.$ref); coll.findone({"_id":zn.$id.str}); db.getsiblingdb(zn.$db).getcollection(zn.$ref).findone({"_id":zn.$id.str}); db.getsiblingdb(nazwabd) - zwraca inną bazę danych bez zmiany bieżącej w mongo shell db2.getcollection(nazwakol) - zwraca obiekt kolekcji o podanej nazwie

MongoDB. Narzędzia, transakcje, referencje 48/73 Praca z bazą danych Funkcja zwracająca ID miejsca po jego nazwie: db.miejsca.find() { "_id" : ObjectId("5839608cb048847f3cf8f11e"), "nazwa" : "Zakopane", "url" : "http://www.zakopane.pl/" } { "_id" : ObjectId("583c19c1deb9a913adfd231a"), "nazwa" : "Małe Ciche", "url" : "http://www.maleciche.pl/" }... // pobieranie id miejsca po nazwie function pobierzidmiejsca(nazwa) { id = db.miejsca.findone({"nazwa":regexp(nazwa)},{_id:1}) if(id!==null) return id._id; else return null; } pobierzidmiejsca('małe'); ObjectId("583c19c1deb9a913adfd231a")

MongoDB. Narzędzia, transakcje, referencje 49/73 Praca z bazą danych Dodawanie osoby do kolekcji, nie przekazujemy wartości wszystkich pól: function dodajosobe(imie, nazwisko, pochodznie) { db.ludzie.insert({ "imie": imie, "nazwisko": nazwisko, "pochodzenie": pochodznie }); } // dodawanie osób dodajosobe("tomasz", "Kowalkowski", pobierzidmiejsca('częstochowa')); dodajosobe('klara', 'Słoczyńska', ObjectId("583c18d2deb9a913adfd2312"));... { "_id" : ObjectId("583c56a7c35740bad326fb38"), "imie" : "Tomasz","nazwisko" : "Kowalkowski", "pochodzenie" : ObjectId("583c186bdeb9a913adfd230c") } { "_id" : ObjectId("583c57b2c35740bad326fb39"), "imie" : "Klara", "nazwisko" : "Słoczyńska", "pochodzenie" : ObjectId("583c18d2deb9a913adfd2312") }

MongoDB. Narzędzia, transakcje, referencje 50/73 Praca z bazą danych Pobieranie ID osoby po jej imieniu i nazwisku: // pobieranie ID osoby function pobierzidosoby(imie, nazwisko) { id = db.ludzie.findone({"imie":imie,"nazwisko":nazwisko},{_id:1}) if(id!==null) return id._id; else return null; } pobierzidosoby('tomasz', 'Kowalkowski') ObjectId("583c56a7c35740bad326fb38") pobierzidosoby('tomasz', 'Kowalkowskii') null

ongodb. Narzędzia, transakcje, referencje 51/73 Praca z bazą danych Dodawanie miejsca, określamy nazwę i adres URL strony: // dodawanie miejsca function dodajmiejsce(nazwa, url) { id = ObjectId(); db.miejsca.insert({ "_id": id, "nazwa": nazwa, "url": url }); return id; } dodajmiejsce("zamość", "http://www.zamosc.pl/") db.miejsca.find()... { "_id" : ObjectId("583c5866c35740bad326fb3a"), "nazwa" : "Zamość", "url" : "http://www.zamosc.pl/" }

MongoDB. Narzędzia, transakcje, referencje 52/73 Praca z bazą danych Lista osób pochodzących z konkretnej miejscowości: function listaosob(pochodzenie) { var idmiejsca = db.miejsca.findone({nazwa:pochodzenie})._id; print(idmiejsca); var cur = db.ludzie.find({"pochodzenie":idmiejsca},{_id:0}); print('lista OSÓB Z '+ pochodzenie.touppercase()); while (cur.hasnext()) { var os = cur.next(); print(os.imie+" "+os.nazwisko); } } listaosob('częstochowa') LISTA OSÓB Z CZĘSTOCHOWA Tomasz Kowalkowski Bartosz Rolnik Kamila Bartosik...

MongoDB. Narzędzia, transakcje, referencje 53/73 Składowanie kodu JavaScript w bazie danych Kod JavaScript przechowywany na serwerze JavaScript jest bardzo ważnym językiem dla MongoDB. Mongo shell korzysta z języka JavaScript. Server posiada również wbudowany interpreter JavaScript używany m.in. w: Map/Reduce funkcji db.eval() klauzuli $where Istnieje możliwość przechowywania funkcji zapisanych w JavaScript na serwerze i wywoływanie ich. Funkcje zapisywane są w specjalnej kolekcji system.js. Zawartość kolekcji system.js można przeglądać, modyfikować, usuwać jak każdą inną kolekcję.

MongoDB. Narzędzia, transakcje, referencje 54/73 Składowanie kodu JavaScript w bazie danych - uwagi Kod JavaScript przechowywany na serwerze Nie powinno się przechowywać logiki aplikacji w bazie danych. Przechowywanie kodu JavaScript na serwerze ma ograniczenia wydajnościowe. Kod aplikacji jest zwykle najbardziej wydajny, jeśli rozwija się razem z aplikacją, ma ten sam system kontroli wersji.

MongoDB. Narzędzia, transakcje, referencje 55/73 Składowanie kodu JavaScript w bazie danych Poniższy kod przykładowej funkcji function sumaliczb(a, b) { return a+b; } sumaliczb(12, 9) można zapisać w bazie, w kolekcji system.js db.system.js.save({ _id:"dodajliczby", value:function(a, b){ return a+b; } }); i uruchomić, np. poniższym poleceniem db.eval("dodajliczby(2, 3);"); // db.eval(dodajliczby, 12, 7); // wczytywanie funkci z serwera i uruchamianie ich na w mongo shell db.loadserverscripts(); dodajliczby(7, 5);

MongoDB. Narzędzia, transakcje, referencje 56/73 Funkcja eval() Funkcja eval(funkcja, [arg1, arg2,...]): porzucona w wersji 3.0 działa, ale jej użycie jest niezalecane, pozwala na wykonanie się kodu JavaScript na serwerze, domyślnie blokuje całą bazę danych na czas działania, nie można używać na kolekcjach współdzielonych (ang. sharding), powinno się jej unikać jeśli w klastrze mamy wspódzielone dane, jednak można używać na niewspółdzielonych kolekcjach i bazach danych, nawet jeśli klaster jest ze współdzieleniem. db.eval( function (a, b) { print("hello on MongoDB server"); return a+b; }, 12, 3); 15

MongoDB. Narzędzia, transakcje, referencje 57/73 Zawartość kolekcji system.js db.system.js.save({ _id: "hello", value : function() { print("hello World"); return "Witaj Świecie"; } }); db.system.js.save({ _id:"dodajliczby", value:function(a, b){ return a+b; } }); db.eval("hello()"); // wykonuje się na serwerze db.loadserverscripts(); hello(); // wczytana z serwera, wykonuje się w mongo shell Zawartość kolekcji system.js: pole _id zawiera nazwę funkcji, jest unikalne w obszarze bazy danych, pole value zawiera definicję funkcji, nie jako tekst ale jako funkcję.

MongoDB. Narzędzia, transakcje, referencje 58/73 Zapytania z polami tablic > db.tabs.find() > db.tabs.insert({tab:[1,2,3,4,5,7]}) > db.tabs.insert({tab:[3,4,5]}) > db.tabs.insert({tab:[1,4,8,12]}) > db.tabs.insert({tab:[7,8,9,10]}) > db.tabs.find({},{_id:0}) { "tab" : [ 1, 2, 3, 4, 5, 7 ] } { "tab" : [ 3, 4, 5 ] } { "tab" : [ 1, 4, 8, 12 ] } { "tab" : [ 7, 8, 9, 10 ] } > db.tabs.find({"tab":{"$lt":4}}).count() // 3 > db.tabs.find({"tab":{"$lte":4}}).count() // 3 > db.tabs.find({"tab":{"$gt":4}}).count() // 4 > db.tabs.find({"tab":{"$gte":4}}).count() // 4 > db.tabs.find({"tab":{$not:{"$lte":4}}}).count() // 1 > db.tabs.find({"tab":{$not:{"$gt":4}}}).count() // 0

MongoDB. Narzędzia, transakcje, referencje 59/73 Tablice w kolekcji restauracji // Liczba wszystkich restauracji, z polem punkty i bez niego > db.restaurants.count({}) // 25355 > db.restaurants.count({"oceny.punkty":{$exists:1}}) // 24618 > db.restaurants.count({"oceny.punkty":{$exists:0}}) // 737 // Liczba restauracji posiadających ocenę mniejszą/większą lub równą 10 > db.restaurants.count({ "oceny.punkty": {$lte: 10} }) // 21053 > db.restaurants.count({ "oceny.punkty": {$gte: 10} }) // 21163 // Liczba restauracji nie posiadających oceny większej/mniejszej niż 10 > db.restaurants.count({ "oceny.punkty": {$not: {$gt: 10} } }) // 5754 > db.restaurants.count({ "oceny.punkty": {$not: {$lt: 10} } }) // 6292

MongoDB. Narzędzia, transakcje, referencje 60/73 Obsługa transakcji w MongoDB W MongoDB: operacje zapisu są atomowe na poziomie dokumentu nawet jeśli zapis modyfikuje wiele zagnieżdżonych dokumentów wewnątrz jednego dokumentu, polecenie modyfikujące wiele dokumentów jest atomowe na każdym dokumencie z osobna, ale operacja w całości atomowa nie jest, zapisy poszczególnych dokumentów mogą się przeplatać z operacjami zapisu innego polecenia, operator $isolated pozwala izolować pojedyncze polecenie zapisu, które dotyczy wielu dokumentów operator $isolated powoduje, że operacja zapisu uzyskuje wyłączny dostęp do kolekcji, operator $isolated nie działa na klastrach ze współdzieleniem (dane podzielone na różne serwery),

MongoDB. Narzędzia, transakcje, referencje 61/73 Semantyka zbliżona do transakcji Ponieważ jeden dokument może zawierać wiele zagnieżdżonych dokumentów, to atomowość operacji na pojedynczym dokumencie zwykle wystarcza w wielu praktycznych przypadkach. Dla przypadków, w których ciąg operacji zapisu musi być wykonany jak w jednej transakcji, można zaimplementować dwustopniowe zatwierdzenie (ang. two-phase commit). Dwustopniowe zatwierdzenie oferuje semantykę tylko zbliżoną do transakcji, zapewnia spójność danych ale jest możliwe, że aplikacja zwróci pośrednie dane (pomiędzy tymi dwoma fazami) albo wykona rollback.

MongoDB. Narzędzia, transakcje, referencje 62/73 Kontrola współbieżności Współbieżność pozwala na działanie różnym aplikacjom w tym samym czasie bez występowania konfliktów czy niespójności danych. Dwa podejścia obsługi współbieżności w MongoDB: jedno podejście zapewniające spójność polega na tworzeniu indeksów unikalnych na polach, w których wartości nie mogą się powtarzać, zapobiega to tworzeniu się powielonych wartości przy wstawianiu czy aktualizacji dokumentów, inne podejście wymaga określenia oczekiwanej biażącej wartości pola w predykacie zapytania operacji zapisu, dwustopniowe zatwierdzanie wprowadza pewną wariację tego rozwiązania, w której predykat zawiera identyfikator aplikacji jak również oczekiwaną bieżącą wartość pola podczas przeprowadania operacji zapisu.

MongoDB. Narzędzia, transakcje, referencje 63/73 Dwustopniowa operacja zapisu W MongoDB: wzorzec wykonywania aktualizacji danych na wielu dokumentach, coś jak transakcja na wielu dokumentach używamy dwustopniowej operacji zapisu (ang. two-phase commit) przy zapisie danych do wielu dokumentów dodatkowo można rozszerzyć ten proces do uzyskania funkcjonalności zbliżonej do polecenia rollback

MongoDB. Narzędzia, transakcje, referencje 64/73 Dwustopniowa operacja zapisu Przy wykonywaniu transakcji składających się z operacji sekwencyjnych, pojawiają się pewne uwagi: atomowość: jeśli jakaś operacja zakończy się niepowodzeniem, wcześniejsze operacje w transakcji muszą zostać wycofane, trzeba zrobić rollback do wcześniejszego stanu, spójność: w przypadku poważnych problemów (sieć, sprzęt), które przeszkodziły transakcji, baza danych musi być w stanie odzyskać wcześniejszy stan spójności. Dwustopniowe zatwierdzanie pozwala na wsparcie dla aktualizacji danych w wielu dokumentach. Dwustopniowe zatwierdzanie zapewnia, że dane w bazie będą spójne i, w przypadku błędów, stan przed rozpoczęciem transakcji jest osiągalny. Podczas wykonywana tego dwustopniowego zatwierdzania dokumenty są w stanie zawieszenia, nie są dostępne.

MongoDB. Narzędzia, transakcje, referencje 65/73 Dwustopniowa operacja zapisu Przygotowanie kont, na których będzie operacja przelewu db.accounts.insert( [ { _id: "A", balance: 1000, pendingtransactions: [] }, { _id: "B", balance: 1000, pendingtransactions: [] } ] ) db.accounts.find() { } { } "_id" : "A", "balance" : 1000.0, "pendingtransactions" : [ ] "_id" : "B", "balance" : 1000.0, "pendingtransactions" : [ ]

MongoDB. Narzędzia, transakcje, referencje 66/73 Dwustopniowa operacja zapisu Inicjalizacja transakcji db.transactions.insert( { _id: 1, source: "A", destination: "B", value: 100, state: "initial", lastmodified: new Date() } ) db.transactions.findone() { } "_id" : NumberInt(1), "source" : "A", "destination" : "B", "value" : NumberInt(100), "state" : "initial", "lastmodified" : ISODate("2016-11-22T08:15:04.244+0000")

MongoDB. Narzędzia, transakcje, referencje 67/73 Dwustopniowa operacja zapisu 1. Pobieramy transakcję w celu jej rozpoczęcia var t = db.transactions.findone( { state: "initial" } ) t { } "_id" : NumberInt(1), "source" : "A", "destination" : "B", "value" : NumberInt(100), "state" : "initial", "lastmodified" : ISODate("2016-11-22T08:15:04.244+0000")

MongoDB. Narzędzia, transakcje, referencje 68/73 Dwustopniowa operacja zapisu 2. Zmiana stanu transakcji na w toku db.transactions.update( { _id: t._id, state: "initial" }, { $set: { state: "pending", lastmodified: new Date() } } ) db.transactions.findone() { } "_id" : NumberInt(1), "source" : "A", "destination" : "B", "value" : NumberInt(100), "state" : "pending", "lastmodified" : ISODate("2016-11-22T08:19:48.637+0000")

MongoDB. Narzędzia, transakcje, referencje 69/73 Dwustopniowa operacja zapisu 3 - Apply the transaction to both accounts db.accounts.update( { _id: t.source, pendingtransactions: { $ne: t._id } }, { $inc: { balance: -t.value }, $push: { pendingtransactions: t._id } } ) db.accounts.update( { _id: t.destination, pendingtransactions: { $ne: t._id } }, { $inc: { balance: t.value }, $push: { pendingtransactions: t._id } } ) db.accounts.find().pretty() { } { } "_id" : "A", "balance" : 900.0, "pendingtransactions" : [ 1.0 ] "_id" : "B", "balance" : 1100.0, "pendingtransactions" : [ 1.0 ]

MongoDB. Narzędzia, transakcje, referencje 70/73 Dwustopniowa operacja zapisu 4 - Update transaction state to wykonana db.transactions.update( { _id: t._id, state: "pending" }, { $set: { state: "applied", lastmodified: new Date() } } ) db.transactions.findone() { } "_id" : NumberInt(1), "source" : "A", "destination" : "B", "value" : NumberInt(100), "state" : "applied", "lastmodified" : ISODate("2016-11-22T08:23:58.076+0000")

MongoDB. Narzędzia, transakcje, referencje 71/73 Dwustopniowa operacja zapisu 5 - Update both accounts list of pending transactions db.accounts.update( { _id: t.source, pendingtransactions: t._id }, { $pull: { pendingtransactions: t._id } } ) db.accounts.update( { _id: t.destination, pendingtransactions: t._id }, { $pull: { pendingtransactions: t._id } } ) db.accounts.find().pretty() { } { } "_id" : "A", "balance" : 900.0, "pendingtransactions" : [ ] "_id" : "B", "balance" : 1100.0, "pendingtransactions" : [ ]

MongoDB. Narzędzia, transakcje, referencje 72/73 Dwustopniowa operacja zapisu - zakończenie transakcji 6. Zmiania statusu transakcji na zakończona db.transactions.update( { _id: t._id, state: "applied" }, { $set: { state: "done", lastmodified: new Date() } } ) db.transactions.findone() { } "_id" : NumberInt(1), "destination" : "B", "lastmodified" : ISODate("2016-11-22T08:26:34.483+0000"), "source" : "A", "state" : "done", "value" : NumberInt(100)

MongoDB. Narzędzia, transakcje, referencje 73/73 Źródła https://docs.mongodb.com/ecosystem/tools/ administration-interfaces/ https://docs.mongodb.com/ecosystem/drivers/ https://www.npmjs.com/search?q=mongo https://mongodb.github.io/node-mongodb-native/ http://meritt.github.io/easymongo/ http://3t.io/mongochef/ https://mongobooster.com/ http://dirolf.com/2010/04/05/ stored-javascript-in-mongodb-and-pymongo.html http://pointbeing.net/weblog/2010/08/ getting-started-with-stored-procedures-in-mongodb.html