{"id":410,"date":"2013-04-26T17:35:30","date_gmt":"2013-04-26T15:35:30","guid":{"rendered":"http:\/\/www.lafabriquedecode.com\/blog\/?p=410"},"modified":"2013-04-26T17:36:13","modified_gmt":"2013-04-26T15:36:13","slug":"mongodb-les-bases-pour-bien-debuter-suite","status":"publish","type":"post","link":"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-suite\/","title":{"rendered":"MongoDB : les bases pour bien d\u00e9buter (2\/3)"},"content":{"rendered":"<p>Dans le billet pr\u00e9c\u00e9dent, nous avons vu quelques unes des requ\u00eates DDL nous permettant de manipuler les structures \u00e9l\u00e9mentaires de MongoDB, comme les bases de donn\u00e9es, les collections et les documents. L&rsquo;heure est maintenant venue de requ\u00eater sur nos donn\u00e9es !<\/p>\n<div id=\"attachment_418\" style=\"width: 381px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2013\/04\/Mongomug.jpg\"><img aria-describedby=\"caption-attachment-418\" loading=\"lazy\" class=\"size-full wp-image-418\" alt=\"Le kit MongoDB, qu'on re\u00e7oit \u00e0 toutes les confs (source http:\/\/xenodesystems.blogspot.mx\/)\" src=\"http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2013\/04\/Mongomug.jpg\" width=\"371\" height=\"332\" srcset=\"http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2013\/04\/Mongomug.jpg 371w, http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2013\/04\/Mongomug-300x268.jpg 300w\" sizes=\"(max-width: 371px) 100vw, 371px\" \/><\/a><p id=\"caption-attachment-418\" class=\"wp-caption-text\">Le kit MongoDB, qu&rsquo;on re\u00e7oit \u00e0 toutes les confs (source http:\/\/xenodesystems.blogspot.mx\/)<\/p><\/div>\n<h1>Notre jeu de donn\u00e9es de d\u00e9marrage<\/h1>\n<p>Il est tr\u00e8s simple :<\/p>\n<pre><strong>&gt; db.gens.insert({\"nom\":\"ferrandez\"});\r\n&gt; db.gens.insert({\"nom\":\"ferrandez\", prenom: \"l\u00e9o\"});\r\n&gt; db.gens.insert({\"nom\":\"ferrandez\", prenom: \"ma\u00efa\", age:6});<\/strong>\r\n&gt; db.gens.find();\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>MongoDB est <em>schema-less<\/em> (prononcez \u00ab\u00a0skimaless\u00a0\u00bb), nous pouvons donc tr\u00e8s bien ins\u00e9rer des documents qui n&rsquo;ont pas la m\u00eame structure, regardez bien nos trois documents, ils ne comportent pas le m\u00eame nombre de champs !<\/p>\n<h1>Poser des index<\/h1>\n<p>Vous le savez, pour que vos requ\u00eates aient un temps d&rsquo;ex\u00e9cution satisfaisant (surtout si elle sont appel\u00e9es fr\u00e9quemment), il est absolument n\u00e9cessaire qu&rsquo;elles s&rsquo;appuient sur des index. MongoDB dispose d&rsquo;index au niveau des collections (l&rsquo;\u00e9quivalent des tables en SQL). Le champ <em>_id<\/em> est index\u00e9 par d\u00e9faut et il est impossible de le supprimer.<\/p>\n<h2>Sur un seul champ<\/h2>\n<p>Pour poser un index sur le champ <em>nom<\/em> dans l&rsquo;ordre ascendant (1, ce sera -1 pour DESC) :<\/p>\n<pre>db.gens.ensureIndex({nom:1});<\/pre>\n<h2>Les index compos\u00e9s<\/h2>\n<p>Pour poser un index sur les champs nom ET prenom (ASC tous les deux) :<\/p>\n<pre>db.gens.ensureIndex({nom:1, prenom:1});<\/pre>\n<p>Comme en SQL, si vos requ\u00eates se basent sur prenom, l&rsquo;index ne sera pas utilis\u00e9 !<br \/>\nSi vous requ\u00eatez sur le nom ou sur le nom ET le pr\u00e9nom, celui-ci sera sollicit\u00e9.<\/p>\n<h2>Les index uniques<\/h2>\n<p>Rien de plus simple :<\/p>\n<pre>db.gens.ensureIndex({nom:1}, {unique: true});<\/pre>\n<p>Ici en r\u00e9alit\u00e9 la pose de cet index va \u00e9chouer car notre champ nom contient les m\u00eames valeurs :<\/p>\n<pre>&gt; db.gens.ensureIndex({nom:1}, {unique: true});\r\nE11000 duplicate key error index: gens.gens.$nom_1  dup key: { : \"ferrandez\" }<\/pre>\n<h2>Voir les index d&rsquo;une collection<\/h2>\n<pre><strong>db.gens.getIndexes();<\/strong>\r\n[\r\n        {\r\n                \"v\" : 1,\r\n                \"key\" : {\r\n                        \"_id\" : 1\r\n                },\r\n                \"ns\" : \"gens.gens\",\r\n                \"name\" : \"_id_\"\r\n        },\r\n        {\r\n                \"v\" : 1,\r\n                \"key\" : {\r\n                        \"nom\" : 1\r\n                },\r\n                \"ns\" : \"gens.gens\",\r\n                \"name\" : \"nom_1\"\r\n        },\r\n        {\r\n                \"v\" : 1,\r\n                \"key\" : {\r\n                        \"nom\" : 1,\r\n                        \"prenom\" : 1\r\n                },\r\n                \"ns\" : \"gens.gens\",\r\n                \"name\" : \"nom_1_prenom_1\"\r\n        }\r\n]<\/pre>\n<h2>Supprimer un index<\/h2>\n<p>On va supprimer l&rsquo;index nomm\u00e9 &lsquo;nom_1_prenom_1&rsquo; :<\/p>\n<pre>&gt; <strong>db.gens.dropIndex('nom_1_prenom_1')<\/strong>\r\n{ \"nIndexesWas\" : 3, \"ok\" : 1 }\r\n&gt; db.gens.getIndexes();\r\n[\r\n        {\r\n                \"v\" : 1,\r\n                \"key\" : {\r\n                        \"_id\" : 1\r\n                },\r\n                \"ns\" : \"gens.gens\",\r\n                \"name\" : \"_id_\"\r\n        },\r\n        {\r\n                \"v\" : 1,\r\n                \"key\" : {\r\n                        \"nom\" : 1\r\n                },\r\n                \"ns\" : \"gens.gens\",\r\n                \"name\" : \"nom_1\"\r\n        }\r\n]<\/pre>\n<p>Nous voyons qu&rsquo;il a \u00e9t\u00e9 effectivement supprim\u00e9 (et nous voyons aussi au passage qu&rsquo;un index est pos\u00e9 par d\u00e9faut par MongoDB sur _id).<\/p>\n<h1>Les requ\u00eates<\/h1>\n<h2>Sur une seule valeur<\/h2>\n<p>Cherchons toutes les personnes qui ont 6 ans :<\/p>\n<pre><strong>&gt; db.gens.find({age:6});<\/strong>\r\n{ \"_id\" : ObjectId(\"517a856bb1d6ce34f91af2d4\"), \"nom\" : \"ferrandez\", \"prenom\" : \"ma\u00efa\", \"age\" : 6 }<\/pre>\n<p>Cherchons toutes les personnes qui s&rsquo;appellent \u00ab\u00a0ferrandez\u00a0\u00bb :<\/p>\n<pre><strong>&gt; db.gens.find({nom:\"ferrandez\"});<\/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<h2>Sur deux valeurs<\/h2>\n<p>Cherchons toutes les personnes qui ont 6 ans et qui s&rsquo;appellent \u00ab\u00a0ferrandez\u00a0\u00bb :<\/p>\n<pre><strong>&gt; db.gens.find({nom:\"ferrandez\", age:6});<\/strong>\r\n{ \"_id\" : ObjectId(\"517a856bb1d6ce34f91af2d4\"), \"nom\" : \"ferrandez\", \"prenom\" : \"ma\u00efa\", \"age\" : 6 }<\/pre>\n<h2>Avec des op\u00e9rateurs de comparaison<\/h2>\n<p>Cherchons tous les \u00ab\u00a0ferrandez\u00a0\u00bb qui ont plus de 6 ans (gt = <em>greater than<\/em>)<\/p>\n<pre><strong>&gt; db.gens.find({nom:\"ferrandez\", age: {$gt: 6}});<\/strong><\/pre>\n<p>Cherchons tous les \u00ab\u00a0ferrandez\u00a0\u00bb qui ont moins de 6 ans (lt = <em>less than<\/em>)<\/p>\n<pre><strong>&gt; db.gens.find({nom:\"ferrandez\", age: {$lt: 6}});<\/strong><\/pre>\n<p>Ces deux requ\u00eates ne ram\u00e8nent aucun r\u00e9sultat, ce qui n&rsquo;est pas le cas des suivantes avec l&rsquo;\u00e9galit\u00e9&#8230;<\/p>\n<pre><strong>&gt; db.gens.find({nom:\"ferrandez\", age: {$lte: 6}});<\/strong>\r\n{ \"_id\" : ObjectId(\"517a856bb1d6ce34f91af2d4\"), \"nom\" : \"ferrandez\", \"prenom\" : \"ma\u00efa\", \"age\" : 6 }\r\n<strong>&gt; db.gens.find({nom:\"ferrandez\", age: {$gte: 6}});<\/strong>\r\n{ \"_id\" : ObjectId(\"517a856bb1d6ce34f91af2d4\"), \"nom\" : \"ferrandez\", \"prenom\" : \"ma\u00efa\", \"age\" : 6 }<\/pre>\n<h2>L&rsquo;\u00e9quivalent du IN SQL<\/h2>\n<p>Les gens dont l&rsquo;\u00e2ge est 6, 7 ou 8 :<\/p>\n<pre><strong>&gt; db.gens.find({age: {$in: [6, 7, 8]}});<\/strong>\r\n{ \"_id\" : ObjectId(\"517a856bb1d6ce34f91af2d4\"), \"nom\" : \"ferrandez\", \"prenom\" : \"ma\u00efa\", \"age\" : 6 }<\/pre>\n<h2>Les expressions r\u00e9guli\u00e8res (regexp)<\/h2>\n<p>Les gens dont le nom commence par la lettre f :<\/p>\n<pre><strong>&gt; db.gens.find({nom:\/^f\/});<\/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","protected":false},"excerpt":{"rendered":"<p>Dans le billet pr\u00e9c\u00e9dent, nous avons vu quelques unes des requ\u00eates DDL nous permettant de manipuler les structures \u00e9l\u00e9mentaires de MongoDB, comme les bases de donn\u00e9es, les collections et les documents. L&rsquo;heure est maintenant venue de requ\u00eater sur nos donn\u00e9es ! Notre jeu de donn\u00e9es de d\u00e9marrage Il est tr\u00e8s simple : &gt; db.gens.insert({\u00ab\u00a0nom\u00a0\u00bb:\u00a0\u00bbferrandez\u00a0\u00bb}); &gt; [&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":[],"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 (2\/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-suite\/\" \/>\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 (2\/3) - La Fabrique de code - Tech blog\" \/>\n<meta property=\"og:description\" content=\"Dans le billet pr\u00e9c\u00e9dent, nous avons vu quelques unes des requ\u00eates DDL nous permettant de manipuler les structures \u00e9l\u00e9mentaires de MongoDB, comme les bases de donn\u00e9es, les collections et les documents. L&rsquo;heure est maintenant venue de requ\u00eater sur nos donn\u00e9es ! Notre jeu de donn\u00e9es de d\u00e9marrage Il est tr\u00e8s simple : &gt; db.gens.insert({&quot;nom&quot;:&quot;ferrandez&quot;}); &gt; [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-suite\/\" \/>\n<meta property=\"og:site_name\" content=\"La Fabrique de code - Tech blog\" \/>\n<meta property=\"article:published_time\" content=\"2013-04-26T15:35:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-04-26T15:36:13+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2013\/04\/Mongomug.jpg\" \/>\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=\"4 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-suite\/\",\"url\":\"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-suite\/\",\"name\":\"MongoDB : les bases pour bien d\u00e9buter (2\/3) - La Fabrique de code - Tech blog\",\"isPartOf\":{\"@id\":\"http:\/\/www.lafabriquedecode.com\/blog\/#website\"},\"datePublished\":\"2013-04-26T15:35:30+00:00\",\"dateModified\":\"2013-04-26T15:36:13+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-suite\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-suite\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-suite\/#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 (2\/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 (2\/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-suite\/","og_locale":"fr_FR","og_type":"article","og_title":"MongoDB : les bases pour bien d\u00e9buter (2\/3) - La Fabrique de code - Tech blog","og_description":"Dans le billet pr\u00e9c\u00e9dent, nous avons vu quelques unes des requ\u00eates DDL nous permettant de manipuler les structures \u00e9l\u00e9mentaires de MongoDB, comme les bases de donn\u00e9es, les collections et les documents. L&rsquo;heure est maintenant venue de requ\u00eater sur nos donn\u00e9es ! Notre jeu de donn\u00e9es de d\u00e9marrage Il est tr\u00e8s simple : &gt; db.gens.insert({\"nom\":\"ferrandez\"}); &gt; [&hellip;]","og_url":"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-suite\/","og_site_name":"La Fabrique de code - Tech blog","article_published_time":"2013-04-26T15:35:30+00:00","article_modified_time":"2013-04-26T15:36:13+00:00","og_image":[{"url":"http:\/\/www.lafabriquedecode.com\/blog\/wp-content\/uploads\/2013\/04\/Mongomug.jpg"}],"author":"admin","twitter_card":"summary","twitter_creator":"@LaFabrique2Code","twitter_site":"@LaFabrique2Code","twitter_misc":{"\u00c9crit par":"admin","Dur\u00e9e de lecture estim\u00e9e":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-suite\/","url":"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-suite\/","name":"MongoDB : les bases pour bien d\u00e9buter (2\/3) - La Fabrique de code - Tech blog","isPartOf":{"@id":"http:\/\/www.lafabriquedecode.com\/blog\/#website"},"datePublished":"2013-04-26T15:35:30+00:00","dateModified":"2013-04-26T15:36:13+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-suite\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-suite\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/www.lafabriquedecode.com\/blog\/2013\/04\/mongodb-les-bases-pour-bien-debuter-suite\/#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 (2\/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\/410"}],"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=410"}],"version-history":[{"count":11,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/posts\/410\/revisions"}],"predecessor-version":[{"id":422,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/posts\/410\/revisions\/422"}],"wp:attachment":[{"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/media?parent=410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/categories?post=410"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.lafabriquedecode.com\/blog\/wp-json\/wp\/v2\/tags?post=410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}