Advertisement
amumia

MongoDB Workshop PHP implementation

Jan 10th, 2013
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.40 KB | None | 0 0
  1. <?php
  2. $server = 'mongodb://localhost:27017';
  3. $dbName = 'pizza_shack';
  4. $collName = 'client';
  5.  
  6.  
  7. $mongo = new \Mongo($server);
  8.  
  9. $db = $mongo->selectDb($dbName);
  10.  
  11. $collection = $db->selectCollection($collName);
  12.  
  13. //Insert
  14. $collection->insert(array(
  15.     'name' => 'Tânia Soares',
  16.     'gender' => 'F',
  17.     'age' => 50,
  18.     'score' => 1
  19. ));
  20. $collection->insert(array(
  21.     'name'   => 'José Dias',
  22.     'gender' => 'M',
  23.     'age'    => 80,
  24.     'score'  => 7,
  25.     'pizzas_preferred' => array(
  26.         array(
  27.             'name' => 'Diavola',
  28.             'score' => 8
  29.         ), array(
  30.             'name' => 'American',
  31.             'score' => 5
  32.         )
  33.     )
  34. ));
  35. $collection->insert(array(
  36.     'name'   => 'Maria Lopes',
  37.     'gender' => 'F',
  38.     'age'    => 40,
  39.     'score'  => 9,
  40.     'stats'  => array(
  41.         'last_pizza_eaten' => 'Carbonara',
  42.         'when' => new DateTime('2012-06-25 12:52:00')
  43.     )
  44. ));
  45. $collection->insert(array(
  46.     'name'   => 'Paulo José',
  47.     'gender' => 'M',
  48.     'age'    => 15,
  49.     'score'  => 10,
  50.     'pizzas_preferred' => array(
  51.         array(
  52.             'name'  => 'Carbonara',
  53.             'score' => 10
  54.         ), array(
  55.             'name'  => 'All Seasons',
  56.             'score' => 6
  57.         )
  58.     ),
  59.     'stats' => array(
  60.         'last_pizza_eaten' => 'American',
  61.         'when' => new DateTime('2012-11-15 01:35:00')
  62.     )
  63. ));
  64. $collection->insert(array(
  65.     'name'   => 'Joana Trindade',
  66.     'gender' => 'F',
  67.     'age'    => 34,
  68.     'score'  => 10,
  69.     'pizzas_preferred' => array(
  70.         array(
  71.             'name'  => 'Diavola',
  72.             'score' => 6
  73.         ), array(
  74.             'name'  =>'Carbonara',
  75.             'score' =>9
  76.         )
  77.     )
  78. ));
  79. $collection->insert(array(
  80.     'name'   => 'João Silva',
  81.     'gender' => 'M',
  82.     'age'    => 38,
  83.     'score'  => 5,
  84.     'stats'  => array(
  85.         'last_pizza_eaten' => 'Cheese Ham',
  86.         'when' => new DateTime('2013-01-02 13:20:00')
  87.     )
  88. ));
  89. $collection->insert(array(
  90.     'name'   => 'Cristina Moreira',
  91.     'gender' => 'F',
  92.     'age'    => 70,
  93.     'score'  => 4,
  94.     'pizzas_preferred' => array(
  95.         array(
  96.             'name'  => 'Carbonara',
  97.             'score' => 8
  98.         ), array(
  99.             'name'  => 'Cheese Ham',
  100.             'score' => 5
  101.         ), array(
  102.             'name'  => 'American',
  103.             'score' => 9
  104.         )
  105.     )
  106. ));
  107. $collection->insert(array(
  108.     'name'   => 'Jorge Martins',
  109.     'gender' => 'M',
  110.     'age'    => 55,
  111.     'score'  => 10,
  112.     'pizzas_preferred' => array(
  113.         array(
  114.             'name'  => 'Carbonara',
  115.             'score' => 10
  116.         ), array(
  117.             'name'  => 'Cheese Ham',
  118.             'score' => 8
  119.         )
  120.     ),
  121.     'stats' => array(
  122.         'last_pizza_eaten' => 'Cheese Ham',
  123.         'when' =>  new DateTime('2011-06-30 20:23:00')
  124.     )
  125. ));
  126.  
  127. //Query
  128. $result = $collection->find(array(
  129.     'stats.last_pizza_eaten' => array('$exists' => true)
  130. ));
  131. $result = $collection->find(array(
  132.     'age' => array('$gt' => 30, '$lt' => 100)
  133. ));
  134. $result = $collection->find(array(
  135.     'age' => array(38, 55)
  136. ));
  137. $result = $collection->find(array(
  138.     '$or' => array(
  139.         array('age' => array('$gt' => 40)),
  140.         array('score' => array('$gt' => 8))
  141.     )
  142. ));
  143. $result = $collection->find(array(
  144.     'gender' => array('$ne' => 'F'),
  145.     '$or' => array(
  146.         array('age' => array('$gt' => 40)),
  147.         array('score' => array('$gt' => 8))
  148.     )
  149. ));
  150. $result = $collection->find(array(
  151.     'name' => new MongoRegex('/^José/')
  152. ));
  153. $result = $collection->find(array(
  154.     'pizzas_preferred.name' => array(
  155.         '$in' => array(new MongoRegex('/diavola/i'))
  156.      )
  157. ));
  158. $result = $collection->find(array(
  159.     'stats.last_pizza_eaten' => array(
  160.         new MongoRegex('/carbonara/i')
  161.     )
  162. ));
  163. /* Needs a real id to be used
  164. $result = $collection->find(array(
  165.     '_id' => new MongoId('<DOCUMENT_ID>')
  166. ));
  167. $result = $collection->find(array(
  168.     '_id' => new MongoId('<DOCUMENT_ID>')
  169. ), array(
  170.     'name' => 1
  171. ));
  172. */
  173.  
  174. $result = $collection->find(array(
  175.     'name' => new MongoRegex('/José/')
  176. ));
  177. $result = $collection->find(array(
  178.     'pizzas_preferred.name' => 'Diavola'
  179. ));
  180. $result = $collection->find(array(
  181.     'stats.last_pizza_eaten' => new MongoRegex('/carbonara/i'),
  182.     'stats.when' => array('$lte' => new DateTime())
  183. ));
  184. $result->sort(array('stats.when' => -1))->limit(1);
  185. $result = $collection->find(array(
  186.     'age' => array('$gt' => 50),
  187.     'stats.last_pizza_eaten' => array('$exists' => true)
  188. ));
  189. $result = $collection->find(array(
  190.     'score' => array('$lte' => 5)
  191. ));
  192. $result = $collection->find(array(
  193.     'pizzas_preferred' => array('$exists' => true, '$ne' => array())
  194. ));
  195. $result = $collection->find(array(
  196.     'age' => array('$in' => array(80, 70))
  197. ));
  198.  
  199. $result->count(); //Total cursor document count
  200. $result->skip(2); //Skip the 2 first documents
  201. $result->limit(3); //Show only 2 documents
  202. $result->skip(2)->count(true); //Gives the total document count taking into account the skip value
  203.  
  204.  
  205. //Update
  206. $collection->update(array(
  207.     'name' => 'José Dias'
  208. ), array(
  209.     'age' => 85
  210. ));
  211.  
  212. $collection->update(array(
  213.     'name' => array('$exists' => false)
  214. ), array(
  215.     'name' => 'José Dias',
  216.     'gender' => 'M',
  217.     'age' => 80,
  218.     'score' => 7,
  219.     'pizzas_preferred' => array(
  220.         array(
  221.             'name' => 'Diavola',
  222.             'score' => 8
  223.         ), array(
  224.             'name' => 'American',
  225.             'score' => 5
  226.         )
  227.     )
  228. ));
  229. $collection->update(array(
  230.     'name' => 'José Dias'
  231. ), array(
  232.     'age' => array('$set' => 85)
  233. ));
  234. $collection->update(array(
  235.     'pizzas_preferred' => array('$exists' => true)
  236. ), array(
  237.     '$inc' => array('score' => 1)
  238. ), array(
  239.     'multiple' => true
  240. ));
  241. $collection->update(array(
  242.     'pizzas_preferred.score' => array('$gt' => 8)
  243. ), array(
  244.     '$set' => array('prize_winner' => true)
  245. ), array(
  246.     'multiple' => true
  247. ));
  248. $collection->update(array(
  249.     '$or' => array(
  250.         array('name' => 'José Dias'),
  251.         array('pizzas_preferred .score' => array('$gt' => 8))
  252.     )
  253. ), array(
  254.     '$set' => array('prize_winner' => true)
  255. ), array(
  256.     'multiple' => true
  257. ));
  258. /*
  259. $collection->update(array(
  260.     '_id' => new MongoId('<DOCUMENT_ID>')
  261. ), array(
  262.     '$unset' => array('pizzas_preferred' => true),
  263.     '$inc' => array('score' => -1)
  264. ));
  265. */
  266. $collection->update(array(
  267.     'pizzas_preferred.name' => 'Diavola'
  268. ), array(
  269.     '$unset' => array('pizzas_preferred' => true)
  270. ), array(
  271.     'multiple' => true
  272. ));
  273. $collection->update(array(), array(
  274.     '$push' => array(
  275.         'pizzas_preferred' => array(
  276.             'name' => '4 Cheese',
  277.             'score' => 10
  278.         )
  279.     )
  280. ));
  281. $collection->update(array(
  282.     'name' => 'Paulo José',
  283.     'pizzas_preferred.name' => 'Carbonara'
  284. ), array(
  285.     '$set' => array(
  286.         'pizzas_preferred.$.score' => 5
  287.     )
  288. ));
  289. $collection->update(array(
  290.     'prize_winner' => array('$exists' => true)
  291. ), array(
  292.     '$unset' => array('prize_winner' => true)
  293. ));
  294. $collection->update(array(
  295.     'name' => 'Tânia Soares'
  296. ), array(
  297.     '$set' => array(
  298.         'stats' => array(
  299.             'last_pizza_eaten' => 'Carbonara',
  300.             'when' => new DateTime('2013-01-10 18:00:00')
  301.         )
  302.     )
  303. ));
  304.  
  305. //Remove
  306. $collection->remove(array(
  307.     'stats.last_pizza_eaten' => array(
  308.         '$exists' => false
  309.     )
  310. ));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement