{"id":424,"date":"2013-04-29T11:10:38","date_gmt":"2013-04-29T09:10:38","guid":{"rendered":"http:\/\/www.lafabriquedecode.com\/blog\/?p=424"},"modified":"2013-04-29T11:12:08","modified_gmt":"2013-04-29T09:12:08","slug":"mongodb-les-bases-pour-bien-debuter-fin","status":"publish","type":"post","link":"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-fin\/","title":{"rendered":"MongoDB : les bases pour bien d\u00e9buter (3\/3)"},"content":{"rendered":"<p>Revenons sur la collection MongoDB qui nous sert d&rsquo;exemple depuis le d\u00e9but et effectuons quelques op\u00e9rations de mise \u00e0 jour \u00e9l\u00e9mentaires. Voici donc pour rappel \u00e0 quoi ressemble notre collection :<\/p>\n<pre>sebastien.ferrandez@sebastien:~$ mongo\r\nMongoDB shell version: 2.0.6\r\nconnecting to: test\r\n&gt; <strong>show dbs;<\/strong>\r\nadmin\u00a0\u00a0 0.203125GB\r\ngens\u00a0\u00a0\u00a0 0.203125GB\r\nlocal\u00a0\u00a0 (empty)\r\n&gt; <strong>use gens;<\/strong>\r\nswitched to db gens\r\n&gt; <strong>db.gens.find();<\/strong>\r\n{ \"_id\" : ObjectId(\"517a850cb1d6ce34f91af2d1\"), \"nom\" : \"ferrandez\" }\r\n{ \"_id\" : ObjectId(\"517a851eb1d6ce34f91af2d2\"), \"nom\" : \"ferrandez\", \"prenom\" : \"l\u00e9o\" }\r\n{ \"_id\" : ObjectId(\"517a856bb1d6ce34f91af2d4\"), \"nom\" : \"ferrandez\", \"prenom\" : \"ma\u00efa\", \"age\" : 6 }<\/pre>\n<p><a href=\"http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2013\/04\/mongo-db-logo.png\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-432\" alt=\"mongo-db-logo\" src=\"http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2013\/04\/mongo-db-logo.png\" width=\"358\" height=\"119\" srcset=\"http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2013\/04\/mongo-db-logo.png 358w, http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2013\/04\/mongo-db-logo-300x99.png 300w\" sizes=\"(max-width: 358px) 100vw, 358px\" \/><\/a><\/p>\n<h1>Op\u00e9rations de mise \u00e0 jour<\/h1>\n<h2>Avec inc<\/h2>\n<p>Supposons qu&rsquo;il nous faille mettre \u00e0 jour l&rsquo;\u00e2ge d&rsquo;une personne : aujourd&rsquo;hui c&rsquo;est l&rsquo;anniversaire de Ma\u00efa, elle a 7 ans ! Voici plusieurs fa\u00e7ons de faire : tout d&rsquo;abord nous incr\u00e9mentons la cl\u00e9 <em>age<\/em> de nos documents pour lesquels age est sup\u00e9rieur \u00e0 5.<\/p>\n<pre>db.gens.update({ age:{$gt: 5}}, {$inc: {age: 1}});<\/pre>\n<h2>Avec set<\/h2>\n<p>Nous ciblons uniquement le pr\u00e9nom<\/p>\n<pre>db.gens.update({ prenom: \"ma\u00efa\"}, {$set: {age: 7}});<\/pre>\n<p>Nous faisons un m\u00e9lange des deux pr\u00e9c\u00e9dentes requ\u00eates :<\/p>\n<pre>db.gens.update({ age:{$gt: 5}}, {$set: {age: 7}});<\/pre>\n<h1>Op\u00e9rations de suppression<\/h1>\n<h2>Suppression par ObjectId<\/h2>\n<pre>&gt; db.gens.find();\r\n{ \"_id\" : ObjectId(\"517a850cb1d6ce34f91af2d1\"), \"nom\" : \"ferrandez\" }\r\n{ \"_id\" : ObjectId(\"517a851eb1d6ce34f91af2d2\"), \"nom\" : \"ferrandez\", \"prenom\" : \"l\u00e9o\" }\r\n{ \"_id\" : <strong>ObjectId(\"517e33cf4937f8d068f9e9aa\")<\/strong>, \"nom\" : \"ferrandez\", \"prenom\" : \"ma\u00efa\", \"age\" : 7 }\r\n&gt; <strong>db.gens.remove( {\"_id\": ObjectId(\"517e33cf4937f8d068f9e9aa\")});<\/strong>\r\n&gt; db.gens.find();\r\n{ \"_id\" : ObjectId(\"517a850cb1d6ce34f91af2d1\"), \"nom\" : \"ferrandez\" }\r\n{ \"_id\" : ObjectId(\"517a851eb1d6ce34f91af2d2\"), \"nom\" : \"ferrandez\", \"prenom\" : \"l\u00e9o\" }<\/pre>\n<h2>Suppression par champ quelconque<\/h2>\n<p>Supprimons tous les gens qui s&rsquo;appellent \u00ab\u00a0ferrandez\u00a0\u00bb :<\/p>\n<pre>&gt; db.gens.find();\r\n{ \"_id\" : ObjectId(\"517a850cb1d6ce34f91af2d1\"), \"nom\" : \"ferrandez\" }\r\n{ \"_id\" : ObjectId(\"517a851eb1d6ce34f91af2d2\"), \"nom\" : \"ferrandez\", \"prenom\" : \"l\u00e9o\" }\r\n&gt; <strong>db.gens.remove({nom: 'ferrandez'});<\/strong>\r\n&gt; db.gens.find();<\/pre>\n<p>Notez que cette fois-ci je n&rsquo;ai pas mis de guillemets autour de la cl\u00e9 (nom) et j&rsquo;ai mis des apostrophes autour du nom pour que vous voyez bien qu&rsquo;il n&rsquo;est pas obligatoire de mettre tout \u00e7a entre guillemets syst\u00e9matiquement !<\/p>\n<h2>Suppression de la premi\u00e8re occurrence seulement<\/h2>\n<p>En mettant justOne \u00e0 1 (le premier param\u00e8tre), seul le premier document satisfaisant aux crit\u00e8res sera supprim\u00e9 :<\/p>\n<pre>&gt; db.gens.find();\r\n{ \"_id\" : ObjectId(\"517e36c14937f8d068f9e9ab\"), \"nom\" : \"ferrandez\", \"prenom\" : \"ma\u00efa\", \"age\" : 7 }\r\n{ \"_id\" : ObjectId(\"517e36e54937f8d068f9e9ac\"), \"nom\" : \"ferrandez\", \"prenom\" : \"s\u00e9bastien\" }\r\n&gt; db.gens.remove({nom: 'ferrandez'}, 1);\r\n&gt; db.gens.find();\r\n{ \"_id\" : ObjectId(\"517e36e54937f8d068f9e9ac\"), \"nom\" : \"ferrandez\", \"prenom\" : \"s\u00e9bastien\" }<\/pre>\n<h2>Suppression de l&rsquo;int\u00e9gralit\u00e9 des documents d&rsquo;une collection<\/h2>\n<pre>&gt; db.gens.remove();<\/pre>\n<p>Voil\u00e0 ! Pour ceux d&rsquo;entre vous qui ont d\u00e9j\u00e0 des connaissances en langage SQL, vous avez les bases pour d\u00e9buter avec MongoDB. Nous allons bient\u00f4t rentrer en d\u00e9tail dans le fonctionnement de MongoDB et en particulier nous attarder sur l&rsquo;aspect <em>d\u00e9normalisation<\/em> !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Revenons sur la collection MongoDB qui nous sert d&rsquo;exemple depuis le d\u00e9but et effectuons quelques op\u00e9rations de mise \u00e0 jour \u00e9l\u00e9mentaires. Voici donc pour rappel \u00e0 quoi ressemble notre collection : sebastien.ferrandez@sebastien:~$ mongo MongoDB shell version: 2.0.6 connecting to: test &gt; show dbs; admin\u00a0\u00a0 0.203125GB gens\u00a0\u00a0\u00a0 0.203125GB local\u00a0\u00a0 (empty) &gt; use gens; switched to db [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[26,46],"tags":[49,87,6,48],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.6.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>MongoDB : les bases pour bien d\u00e9buter (3\/3) - La Fabrique de code - Tech blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-fin\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MongoDB : les bases pour bien d\u00e9buter (3\/3) - La Fabrique de code - Tech blog\" \/>\n<meta property=\"og:description\" content=\"Revenons sur la collection MongoDB qui nous sert d&rsquo;exemple depuis le d\u00e9but et effectuons quelques op\u00e9rations de mise \u00e0 jour \u00e9l\u00e9mentaires. Voici donc pour rappel \u00e0 quoi ressemble notre collection : sebastien.ferrandez@sebastien:~$ mongo MongoDB shell version: 2.0.6 connecting to: test &gt; show dbs; admin\u00a0\u00a0 0.203125GB gens\u00a0\u00a0\u00a0 0.203125GB local\u00a0\u00a0 (empty) &gt; use gens; switched to db [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-fin\/\" \/>\n<meta property=\"og:site_name\" content=\"La Fabrique de code - Tech blog\" \/>\n<meta property=\"article:published_time\" content=\"2013-04-29T09:10:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-04-29T09:12:08+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2013\/04\/mongo-db-logo.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:creator\" content=\"@LaFabrique2Code\" \/>\n<meta name=\"twitter:site\" content=\"@LaFabrique2Code\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-fin\/\",\"url\":\"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-fin\/\",\"name\":\"MongoDB : les bases pour bien d\u00e9buter (3\/3) - La Fabrique de code - Tech blog\",\"isPartOf\":{\"@id\":\"http:\/\/www.lafabriquedecode.com\/blog\/#website\"},\"datePublished\":\"2013-04-29T09:10:38+00:00\",\"dateModified\":\"2013-04-29T09:12:08+00:00\",\"author\":{\"@id\":\"http:\/\/www.lafabriquedecode.com\/blog\/#\/schema\/person\/83863c048b82fd9ccf6407bddd241162\"},\"breadcrumb\":{\"@id\":\"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-fin\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-fin\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-fin\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"http:\/\/www.lafabriquedecode.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MongoDB : les bases pour bien d\u00e9buter (3\/3)\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.lafabriquedecode.com\/blog\/#website\",\"url\":\"http:\/\/www.lafabriquedecode.com\/blog\/\",\"name\":\"La Fabrique de code - Tech blog\",\"description\":\"PHP objet, MySQL, Design Patterns, OOP...et plus !\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/www.lafabriquedecode.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"http:\/\/www.lafabriquedecode.com\/blog\/#\/schema\/person\/83863c048b82fd9ccf6407bddd241162\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"http:\/\/www.lafabriquedecode.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/fc2e1de7c8a1871b50ff9c6a6f8682a2?s=96&d=retro&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/fc2e1de7c8a1871b50ff9c6a6f8682a2?s=96&d=retro&r=g\",\"caption\":\"admin\"},\"url\":\"http:\/\/www.lafabriquedecode.com\/blog\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MongoDB : les bases pour bien d\u00e9buter (3\/3) - La Fabrique de code - Tech blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-fin\/","og_locale":"fr_FR","og_type":"article","og_title":"MongoDB : les bases pour bien d\u00e9buter (3\/3) - La Fabrique de code - Tech blog","og_description":"Revenons sur la collection MongoDB qui nous sert d&rsquo;exemple depuis le d\u00e9but et effectuons quelques op\u00e9rations de mise \u00e0 jour \u00e9l\u00e9mentaires. Voici donc pour rappel \u00e0 quoi ressemble notre collection : sebastien.ferrandez@sebastien:~$ mongo MongoDB shell version: 2.0.6 connecting to: test &gt; show dbs; admin\u00a0\u00a0 0.203125GB gens\u00a0\u00a0\u00a0 0.203125GB local\u00a0\u00a0 (empty) &gt; use gens; switched to db [&hellip;]","og_url":"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-fin\/","og_site_name":"La Fabrique de code - Tech blog","article_published_time":"2013-04-29T09:10:38+00:00","article_modified_time":"2013-04-29T09:12:08+00:00","og_image":[{"url":"http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2013\/04\/mongo-db-logo.png"}],"author":"admin","twitter_card":"summary","twitter_creator":"@LaFabrique2Code","twitter_site":"@LaFabrique2Code","twitter_misc":{"\u00c9crit par":"admin","Dur\u00e9e de lecture estim\u00e9e":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-fin\/","url":"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-fin\/","name":"MongoDB : les bases pour bien d\u00e9buter (3\/3) - La Fabrique de code - Tech blog","isPartOf":{"@id":"http:\/\/www.lafabriquedecode.com\/blog\/#website"},"datePublished":"2013-04-29T09:10:38+00:00","dateModified":"2013-04-29T09:12:08+00:00","author":{"@id":"http:\/\/www.lafabriquedecode.com\/blog\/#\/schema\/person\/83863c048b82fd9ccf6407bddd241162"},"breadcrumb":{"@id":"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-fin\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-fin\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-fin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"http:\/\/www.lafabriquedecode.com\/blog\/"},{"@type":"ListItem","position":2,"name":"MongoDB : les bases pour bien d\u00e9buter (3\/3)"}]},{"@type":"WebSite","@id":"http:\/\/www.lafabriquedecode.com\/blog\/#website","url":"http:\/\/www.lafabriquedecode.com\/blog\/","name":"La Fabrique de code - Tech blog","description":"PHP objet, MySQL, Design Patterns, OOP...et plus !","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/www.lafabriquedecode.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"http:\/\/www.lafabriquedecode.com\/blog\/#\/schema\/person\/83863c048b82fd9ccf6407bddd241162","name":"admin","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"http:\/\/www.lafabriquedecode.com\/blog\/#\/schema\/person\/image\/","url":"http:\/\/0.gravatar.com\/avatar\/fc2e1de7c8a1871b50ff9c6a6f8682a2?s=96&d=retro&r=g","contentUrl":"http:\/\/0.gravatar.com\/avatar\/fc2e1de7c8a1871b50ff9c6a6f8682a2?s=96&d=retro&r=g","caption":"admin"},"url":"http:\/\/www.lafabriquedecode.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/posts\/424"}],"collection":[{"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/comments?post=424"}],"version-history":[{"count":10,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/posts\/424\/revisions"}],"predecessor-version":[{"id":434,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/posts\/424\/revisions\/434"}],"wp:attachment":[{"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/media?parent=424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/categories?post=424"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/tags?post=424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}