MongoDB
A MongoDB egy NoSQL adatbázis json szerű formában tárolja az adatokat / dokumentumokat. Nagy mennyiségű adatok tárolására olvasására optimalizálták, emellett könnyen skálázható. Az adatok között nincs olyan szintű kapcsolat mint a relációs adatbázisok esetén. |
|
Telepítsük debian-ra:# apt-get install mongodb Php csomag hozzá: # apt-get install php-mongodb A configjában ha szükséges átírhatjuk az ip-t, hogy kívülről is elérhető legyen. A /etc/mongodb.conf -fájlban a bind ip-t kell átírni, majd # service mongodb restart Parancssorból így lehet belépni: # mongo --host 192.168.1.2 --port 27017 Néhány parancsot fogunk kipróbálni. Adatbázisok listája: > show dbs Adatbázis kiválasztása: > use tesztDB Felhasználó létrehozása "root" joggal: > db.createUser({user: "felhasznalo", pwd: "jelszo", roles: [{role:"userAdminAnyDatabase", db: "admin" }]}) Dokumentum létrehozása, a "products" itt a collection -t jelenti: > db.products.insert({label:"teszt2",value:"2"}); Products collection összes elemének elistája formázva: > db.products.find().pretty(); Dokumentum módosítása: > db.products.update({label:"teszt2"},{$set:{value:"3"}); Mező átnevezése: > db.products.update({label:"teszt2"},{$rename:{value:"data"}); Mező törlés: > db.products.update({label:"teszt2"},{$unset:{value:"valami"}}); Dokumentum törlés: > db.products.remove({label:"teszt2"}); Dokumentum keresése: > db.products.find({label:"teszt2"}).pretty(); Dokumentum darabszámai: > db.products.find({label:"teszt2"}).pretty().count(); Dokumentumok label mezőinek a felsorolása: > db.products.find().forEach(function(row){print("Label:"+row.label)}); Symfony-hoz a következő csomagokat tegyük fel: # composer require alcaeus/mongo-php-adapter # composer require doctrine/mongodb-odm-bundle Az .env-be állítsuk be az adatbázis elérsét: MONGODB_URL=mongodb://192.168.1.2:27017 MONGODB_DB=symfony Hozzunk létre egy dokumentumot App\Document\Products.php <?php namespace App\Document; use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB; /** * @MongoDB\Document */ class Products { /** * @MongoDB\Id */ protected $id; /** * @MongoDB\Field(type="string") */ protected $label; /** * @MongoDB\Field(type="string") */ protected $value; public function __construct() { } /** * Set label * * @param string $label * @return Products */ public function setLabel($label) { $this->label = $label; return $this; } /** * Get label * * @return string */ public function getLabel() { return $this->label; } /** * Set value * * @param string $value * @return Products */ public function setValue($value) { $this->value = $value; return $this; } /** * Get value * * @return string */ public function getValue() { return $this->value; } } A controllerben include-oljuk be a következőt: use Doctrine\ODM\MongoDB\DocumentManager as DocumentManager; Lista: public function mongoList(DocumentManager $dm) { $restresult = $dm->getRepository(Products::Class)->findAll(); Beszúrás: public function mongoInsert(DocumentManager $dm) { $user = new Products(); $user->setLabel("Termék 1"); $user->setValue("1"); $dm->persist($user); $dm->flush(); Törlés, módosítás ugyanilyen módon működik, mint a fentiek. MongoDb qui-nak használhatjuk a windows-ra gui-nak nosql-manager -t vagy a Robo3T-t. https://www.mongodb.com/ https://robomongo.org/ https://www.mongodbmanager.com/ https://vfac.fr/blog/how-to-use-doctrine-mongo-db-with-symfony-4 |
2020.02.08. |
Figyelem! Az itt olvasható leírások, nem teljesek és nem biztos, hogy pontosak. Nem
frissülnek folyamatosan, ezért nem mindegyik használható az aktuális verziójú rendszerekben. Mindenki saját
felelősségére használja az itt található ötleteket. Az esetleges károkért nem vállalunk felelősséget.