<?php require '../src/Rocketr/Autoloader.php'; \Rocketr\Autoloader::register(); $Knot = new Rocketr\Engine(); $Knot->connexion('mongodb://127.0.0.1:27017')->database('default'); $map = ['reference' => ['books' => ['author' => 'authors', 'writer' => 'authors']], 'has_collection' => ['libraries' => ['archives' => 'books', 'books' => 'books'], 'shelves' => ['books' => 'books'], 'authors' => ['beloved_places' => 'cities']]]; \Rocketr\Schema\Map::load($map); //\Rocketr\Schema\Reference::add('books', ['author' => 'authors']); echo 'One To Many Relation --- <br />'; echo 'From the descendant --- <br />'; $B = $Knot->find('books')->where('author.name = "Terry Pratchett"')->one(); echo "<pre>"; echo print_r($B, true); echo "</pre>"; echo 'From the ascendant --- <br />'; $A = $Knot->find('authors')->having('books')->where('title = "Quand le diable était jeune"')->as('author')->one(); echo "<pre>"; echo print_r($A, true); echo "</pre>";
<?php require '../../../src/Rocketr/Autoloader.php'; \Rocketr\Autoloader::register(); $DB = new Rocketr\Engine(); $DB->connexion('mongodb://127.0.0.1:27017')->database('default'); $title = "Cinq semaines en ballon"; $DB->find('books')->where('title = "' . $title . '"')->one(); $DB->find('books')->where("title = '{$title}'")->one(); $DB->find('books')->where('title = "Cinq semaines en ballon"')->one(); $DB->find('books')->where('title LIKE "cinq"')->one(); //$cities = $DB->find('cities')->where('pop = 1455')->all(); // //echo "<pre>"; //echo print_r($cities, true); //echo "</pre>"; // // // // //echo '---- <br />'; // //$C = new \MongoClient('mongodb://127.0.0.1:27017'); //$DB = $C->selectDB('default'); // //$query = ['pop'=>1455]; //echo "<pre>"; //echo var_dump($query, true); //echo "</pre>"; //$r = $DB->cities->findOne($query); //
<?php require '../../../src/Rocketr/Autoloader.php'; \Rocketr\Autoloader::register(); $DB = new Rocketr\Engine(); $DB->connexion('mongodb://127.0.0.1:27017')->database('default'); $map = ['reference' => ['books' => ['author' => 'authors']], 'has_collection' => ['authors' => ['places' => 'cities']]]; \Rocketr\Schema\Map::load($map); $TerryPratchett = $DB->create('authors')->set('name', 'Terry Pratchett')->one(); $IanFleming = $DB->create('authors')->set('name', 'Ian Fleming')->one(); $JulesVernes = $DB->create('authors')->set('name', 'Jules Vernes')->one(); $Book = $DB->create('books')->set('title', "Cinq semaines en ballon")->set('author', $JulesVernes)->one(); $Book = $DB->create('books')->set('title', "Voyage au centre de la Terre")->set('author', $JulesVernes)->one(); $Book = $DB->create('books')->set('title', "Voyage au centre de la Terre")->set('author', $JulesVernes)->one();
<?php require '../src/Rocketr/Autoloader.php'; \Rocketr\Autoloader::register(); $Knot = new Rocketr\Engine(); $Knot->connexion('mongodb://127.0.0.1:27017')->database('default'); //$Rocketr->update('books')->where('_id = "54ac66d3d5c2c0fe57d63afa"')->set('summary', "C'est l'histoire d'un mage... qui part en vacances")->one(); //$Rocketr->update('books')->where('_id = "54ac66d3d5c2c0fe57d63afa"')->push('pages', 'Il était une fois... une autre fois en fait.')->one(); //$Rocketr->update('books')->where('_id = "54ac66d3d5c2c0fe57d63afa"')->push('pages', 'Et a la fin, il meurt.')->one(); //$Rocketr->update('books')->where('_id = "54ac66d3d5c2c0fe57d63afa"')->push('pages', 'Mais non, je déconne, il revient pour faire un 8eme fils.')->one(); //$Rocketr->update('books')->where('_id = "54ac66d3d5c2c0fe57d63afa"')->push('pages', 'Et aussi les 7 précédents.')->one(); //$Rocketr->update('books')->where('_id = "54ac66d3d5c2c0fe57d63afa"')->push('pages', 'Ouai, les bon vieux boulards, ça ce vend mieux... ')->one(); //$Rocketr->update('books')->where('_id = "54ac66d3d5c2c0fe57d63afa"')->set('pages', [ // 'Il était une fois... une autre fois en fait.', // 'Et a la fin, il meurt.', // 'Mais non, je déconne, il revient pour faire un 8eme fils.', // 'Et aussi les 7 précédents.' //])->one(); //$Rocketr->update('books')->where('_id = "54ac66d3d5c2c0fe57d63afa"')->pull('pages', 'Et aussi les 7 précédents.')->one(); //$Rocketr->update('books')->where('_id = "54ac66d3d5c2c0fe57d63afa"') // ->pull('pages', 'Ouai, les bon vieux boulards, ça ce vend mieux... ') // ->pull('pages', 'Mais non, je déconne, il revient pour faire un 8eme fils.') // ->one(); //$Rocketr->update('books')->where('_id = "54ac66d3d5c2c0fe57d63afa"') // ->remove('summary') // ->one(); //$Rocketr->update('books')->where('_id = "54ac66d3d5c2c0fe57d63afa"') // ->remove('pages') // ->one(); //$Rocketr->update('books')->where('_id = "54ac66d3d5c2c0fe57d63afa"')->rename('title', 'the_title')->one(); //$Rocketr->update('books')->rename('title', 'the_title')->all();
<?php require '../../../src/Rocketr/Autoloader.php'; \Rocketr\Autoloader::register(); $DB = new Rocketr\Engine(); $DB->connexion('mongodb://127.0.0.1:27017')->database('default'); //Each stage method are part of the current pipeline stage ////Distinct values //$States = $DB->aggregate('cities')->distinct('state'); // ////echo "<pre>"; ////echo print_r($States, true); ////echo "</pre>"; //Aggregation pipeline $LargeCities = $DB->aggregate('cities')->where('pop > 10000')->group('state')->count('big_cities')->max('pop', 'biggest_city')->sum('pop', 'state_pop')->where('biggest_city > 50000')->all(); $out = [['state' => 'MA', 'big_cities' => 347, 'biggest_city' => 'BOSTON', 'state_pop' => 2000000], ['state' => 'CA', 'big_cities' => 412, 'biggest_city' => 'LOS ANGELES', 'state_pop' => 42000000]]; echo "<pre>"; echo print_r($LargeCities, true); echo "</pre>";
<?php require '../src/Rocketr/Autoloader.php'; \Rocketr\Autoloader::register(); $Knot = new Rocketr\Engine(); $Knot->connexion('mongodb://127.0.0.1:27017')->database('default'); $map = ['reference' => ['books' => ['author' => 'authors', 'writer' => 'authors']], 'has_collection' => ['libraries' => ['archives' => 'books', 'books' => 'books'], 'shelves' => ['books' => 'books'], 'authors' => ['beloved_places' => 'cities']]]; \Rocketr\Schema\Map::load($map); echo 'Collection --- <br />'; /** Document side (get descendants) */ //Find the shelves that have the book "La huitième couleur" $S = $Knot->find('shelves')->where('books.title = "La Huitième Couleur"')->one(); //$S = $Rocketr->find('libraries->where('archives.title = "La Huitième Couleur"') // ->one(); //$Rocketr->find('users')->where('roles.name = "admin"') // ->one(); echo "<pre>"; echo print_r($S, true); echo "</pre>"; /** Reverse Collection side (collection documents target) --- Nope, cannot do that.; $Bks = $Rocketr->find('books')->in('archives')->where('libraries.address.city = "Paris" AND title BEGINWITH "La huitième"') ->or_in('for_sales')-> ->one(); $S = $Rocketr->find('shelves')->select('books')->one(); echo "<pre>"; echo print_r($Bks, true); echo "</pre>";
<?php require '../src/Rocketr/Autoloader.php'; \Rocketr\Autoloader::register(); $Knot = new Rocketr\Engine(); $Knot->connexion('mongodb://127.0.0.1:27017')->database('default'); $map = ['reference' => ['in_stock' => ['product' => 'products', 'store' => 'stores'], 'stores' => ['street_address' => 'addresses'], 'addresses' => ['city' => 'cities']]]; \Rocketr\Schema\Map::load($map); $Paris = $Knot->find('cities')->where('name = "Paris"')->one(); $Tours = $Knot->find('cities')->where('name = "Tours"')->one(); $ParisAddress = $Knot->create('addresses')->set('city', $Paris)->one(); $ToursAddress = $Knot->create('addresses')->set('city', $Tours)->one(); $Knot->create('stores')->set('trade_mark', 'Carrefour Market')->set('_id', '1')->set('kind', 'proximity')->set('price_range', 'low')->set('street_address', $ParisAddress)->one(); $Knot->create('stores')->set('trade_mark', 'Monop')->set('_id', '2')->set('kind', 'proximity')->set('price_range', 'medium')->set('street_address', $ToursAddress)->one(); $Knot->create('stores')->set('trade_mark', 'U')->set('_id', '3')->set('kind', 'proximity')->set('price_range', 'low')->set('street_address', $ParisAddress)->one(); $Knot->create('stores')->set('trade_mark', 'Causses')->set('_id', '4')->set('kind', 'bio')->set('price_range', 'hight')->set('street_address', $ParisAddress)->one(); //We will make a sandwish. $Knot->create('products')->set('_id', '01')->set('name', 'Tomato')->one(); $Knot->create('products')->set('_id', '02')->set('name', 'Ketchup')->one(); $Knot->create('products')->set('_id', '04')->set('name', 'Salad')->one(); $Knot->create('products')->set('_id', '05')->set('name', 'Pickles')->one(); $Knot->create('products')->set('_id', '07')->set('name', 'White Bread')->one(); $Knot->create('products')->set('_id', '08')->set('name', 'Mayonaise')->one(); $Knot->create('products')->set('_id', '09')->set('name', 'Honey Mustard')->one(); $Knot->create('products')->set('_id', '010')->set('name', 'Pulled Porck')->one(); $Knot->create('products')->set('_id', '011')->set('name', 'Pastrami')->one(); $Knot->create('products')->set('_id', '012')->set('name', 'Turkey Pastrami')->one(); $Knot->create('in_stock')->set('product', '01')->set('store', '1')->set('price', 1)->set('quantity', 100)->set('unit', 'kg')->one(); $Knot->create('in_stock')->set('product', '01')->set('store', '2')->set('price', 1.5)->set('quantity', 20)->set('unit', 'kg')->one(); $Knot->create('in_stock')->set('product', '01')->set('store', '3')->set('price', 0.9)->set('quantity', 200)->set('unit', 'kg')->one(); $Knot->create('in_stock')->set('product', '01')->set('store', '4')->set('price', 1.8)->set('quantity', 10)->set('unit', 'kg')->one();
<?php require '../../src/Rocketr/Autoloader.php'; \Rocketr\Autoloader::register(); $DB = new Rocketr\Engine(); $DB->connexion('mongodb://127.0.0.1:27017')->database('default'); $map = ['reference' => ['in_stock' => ['product' => 'products', 'store' => 'stores', 'warehouse' => 'stores'], 'stores' => ['street_address' => 'addresses'], 'addresses' => ['city' => 'cities']]]; \Rocketr\Schema\Map::load($map); $S = $Knot->find('stores')->where('price_range = "medium"')->having('in_stock', 'store')->where('product.name = "Pickles"')->having('in_stock', 'store')->where('product.name = "Pastrami"')->all(); echo "<pre>"; echo print_r($S, true); echo "</pre>"; echo '----- <br />'; $Stores = $DB->find('stores')->where('street_address.city.name = "Paris"')->having('in_stock', 'store')->where('product.name = "Pickles"')->all(); echo "<pre>"; echo print_r($Stores, true); echo "</pre>"; echo '----- <br />'; $Books = $DB->find('books')->where('author.name = "Terry Pratchett"')->all(); echo '----- <br />'; $FrCities = $DB->find('cities')->where('department.region.country.name = "France" AND pop > 100000')->one();