{"id":103,"date":"2017-02-15T16:56:49","date_gmt":"2017-02-15T15:56:49","guid":{"rendered":"http:\/\/union31xh.free.fr\/?p=103"},"modified":"2017-02-20T19:30:34","modified_gmt":"2017-02-20T18:30:34","slug":"mongodb-script-js-pour-manipuler-les-donnees","status":"publish","type":"post","link":"https:\/\/blogperso.union31.fr\/?p=103","title":{"rendered":"MongoDB : script JS pour manipuler les donn\u00e9es"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Sommaire<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blogperso.union31.fr\/?p=103\/#I_Introduction\" >I Introduction<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blogperso.union31.fr\/?p=103\/#II_Exemple_de_script\" >II Exemple de script<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blogperso.union31.fr\/?p=103\/#II1_Recherche_de_documents\" >II.1 Recherche de documents<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blogperso.union31.fr\/?p=103\/#II2_Copie_locale_dune_base_de_donnees\" >II.2 Copie locale d&rsquo;une base de donn\u00e9es<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blogperso.union31.fr\/?p=103\/#II21_Copie_manuelle\" >II.2.1 Copie manuelle<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blogperso.union31.fr\/?p=103\/#II22_Copie_automatique\" >II.2.2 Copie automatique<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blogperso.union31.fr\/?p=103\/#III_Export_de_donnees_dans_un_fichier_texte\" >III Export de donn\u00e9es dans un fichier texte<\/a><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"I_Introduction\"><\/span>I Introduction<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Exemple de scripts en JavaScript stock\u00e9 sous forme de fonctions dans MongoDB.<\/p>\n<p>La base de donn\u00e9es utilis\u00e9e est t\u00e9l\u00e9chargeable \u00e0 partir de l&rsquo;adresse suivante : <a href=\"http:\/\/world.openfoodfacts.org\/data\/openfoodfacts-mongodbdump.tar.gz\" target=\"_blank\">http:\/\/world.openfoodfacts.org\/data\/openfoodfacts-mongodbdump.tar.gz<\/a><\/p>\n<p>L&rsquo;outil utilis\u00e9 pour stocker les fonctions js en base de donn\u00e9es est le client Robomongo (plus pratique qu&rsquo;en shell)<\/p>\n<h1><span class=\"ez-toc-section\" id=\"II_Exemple_de_script\"><\/span>II Exemple de script<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"II1_Recherche_de_documents\"><\/span>II.1 Recherche de documents<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Rechercher tous les documents en fonction d&rsquo;une marque puis n&rsquo;afficher que certaines propri\u00e9t\u00e9s :<\/p>\n<p>fonction :<\/p>\n<p>[pastacode lang=\u00a0\u00bbjavascript\u00a0\u00bb manual=\u00a0\u00bbfunction(_marque)%20%7B%0A%20%20%20%20var%20_var_marque%20%3D%20_marque%3B%0A%20%20%20%20%2F%2F%20S%C3%A9lection%20de%20la%20base%20donn%C3%A9es%20de%20travail%0A%20%20%20%20var%20db_food%20%3D%20db.getSiblingDB(&lsquo;open_food_facts&rsquo;)%0A%20%20%20%20%2F%2F%20Recherche%20document%0A%20%20%20%20var%20cursor%20%3D%20db_food.produit.find(%7Bbrands%20%3A%20_var_marque%20%7D)%3B%0A%20%20%20%20%2F%2F%20NB%20r%C3%A9sultat%0A%20%20%20%20var%20nb_resultat%20%3D%20%20cursor.count()%3B%0A%20%20%20%20var%20texte%20%3D%20%22%22%3B%0A%20%20%20%20var%20cpt%20%3D%200%3B%0A%20%20%20%20%2F%2F%20Parcours%20du%20r%C3%A9sultat%0A%20%20%20%20while%20(%20cursor.hasNext()%20)%20%7B%0A%20%20%20%20%20%20%20%2F%2F%20r%C3%A9cup%C3%A8re%20le%20document%20en%20cours%0A%20%20%20%20%20%20%20var%20doc%20%3D%20cursor.next()%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20construit%20r%C3%A9sultat%20texte%0A%20%20%20%20%20%20%20texte%20%2B%3D%20cpt%20%2B%20%22%20&#8211;%3E%22%20%2B%20doc.brands%20%2B%20%22%20%3A%20%22%20%2B%20doc.product_name%20%2B%20%22%5Cn%22%3B%0A%20%20%20%20%20%20%20cpt%20%2B%2B%3B%0A%20%20%20%20%7D%20%0A%20%20%20%20%2F%2F%20Affichage%20r%C3%A9sultat%20texte%0A%20%20%20%20texte%20%3D%20%22nb%20r%C3%A9sultats%20%3A%22%20%2B%20nb_resultat%20%2B%20%22%5Cn%22%20%2B%20texte%3B%0A%20%20%20%20print(texte)%3B%0A%7D\u00a0\u00bb message=\u00a0\u00bb\u00a0\u00bb highlight=\u00a0\u00bb\u00a0\u00bb provider=\u00a0\u00bbmanual\u00a0\u00bb\/]<\/p>\n<p>R\u00e9sultat :<\/p>\n<pre>&gt; db.loadServerScripts()\r\n&gt; recherche1(\"lustucru\")\r\nnb r\u00e9sultats :5\r\n0 --&gt;lustucru : cubes \u00e0 po\u00ealer\r\n1 --&gt;lustucru : pasta box lustucru fusilli bolo poulet\r\n2 --&gt;lustucru : Mafalda comme un chef\r\n3 --&gt;lustucru : Polenta facile saveur Fromage\r\n4 --&gt;lustucru : Oufs bio gros\r\n\r\n&gt;<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"II2_Copie_locale_dune_base_de_donnees\"><\/span>II.2 Copie locale d&rsquo;une base de donn\u00e9es<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"II21_Copie_manuelle\"><\/span>II.2.1 Copie manuelle<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>[pastacode lang=\u00a0\u00bbjavascript\u00a0\u00bb manual=\u00a0\u00bb%20%20%20%20var%20nom_bdd_source%20%3D%20%22open_food_facts%22%20%3B%0A%20%20%20%20var%20nom_bdd_dest%20%20%20%3D%20%22open_food_facts2%22%3B%0A%20%20%20%20%0A%20%20%20%20var%20nom_col_source%20%3D%20%22produit%22%20%3B%0A%20%20%20%20var%20nom_col_dest%20%20%20%3D%20%22test_clone2%22%20%3B%0A%20%20%20%0A%0A%20%20%20%20print(%22&#8211;%3E%20d%C3%A9but%20%3A%20%22%20%2B%20new%20Date()%20)%3B%0A%20%20%20%0A%20%20%20%20%2F%2F%20S%C3%A9lection%20BDD%0A%20%20%20%20var%20db_source%20%3D%20db.getSiblingDB(nom_bdd_source)%3B%0A%20%20%20%20var%20db_dest%20%20%20%3D%20db.getSiblingDB(nom_bdd_dest)%3B%0A%20%20%20%20%2F%2F%20Obj%20Collection%0A%20%20%20%20var%20col_source%20%3D%20%20db_source.getCollection(nom_col_source)%3B%0A%20%20%20%20var%20col_dest%20%20%20%3D%20%20db_dest.getCollection(nom_col_dest)%3B%0A%20%20%20%20%0A%20%20%20%20%2F%2F%20!!%20Efface%20la%20collection%20de%20destination%0A%20%20%20%20col_dest.drop()%3B%0A%20%20%20%20%0A%20%20%20%20%2F%2F%20recherche%20tous%20les%20documents%0A%20%20%20%20var%20cursor_col_source%20%3D%20col_source.find(%7B%7D)%3B%0A%20%20%20%20%2F%2F%20parcours%20r%C3%A9sultat%0A%20%20%20%20while%20(cursor_col_source.hasNext())%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20r%C3%A9cup%C3%A8re%20doc%0A%20%20%20%20%20%20%20%20var%20doc%20%3D%20cursor_col_source.next()%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%2F%2F%20deb%20traitement%0A%20%20%20%20%20%20%20%20%2F%2F%20&#8230;.%0A%20%20%20%20%20%20%20%20%2F%2F%20fin%20traitement%0A%20%20%0A%20%20%20%20%20%20%20%20%2F%2F%20ins%C3%A8re%20doc%20dans%20nouvelle%20collection%0A%20%20%20%20%20%20%20%20var%20res%20%3D%20col_dest.insert(doc)%3B%0A%0A%20%20%20%20%7D%20%20%20%20%0A%20%20%20%0A%20%20%20%20db_source.logout()%3B%20%0A%20%20%20%20db_dest.logout()%3B%20%0A%20%20%20%20%0A%20%20%20%20print(%22&#8211;%3E%20fin%20%3A%20%22%20%2B%20new%20Date()%20)%3B%20%20%0A%20%20&Prime; message=\u00a0\u00bb\u00a0\u00bb highlight=\u00a0\u00bb\u00a0\u00bb provider=\u00a0\u00bbmanual\u00a0\u00bb\/]<\/p>\n<p>R\u00e9sultat :<\/p>\n<pre>&gt; clone_collection()\r\n--&gt; d\u00e9but : Wed Feb 15 2017 18:50:57 GMT+0100\r\n--&gt; fin : Wed Feb 15 2017 18:58:51 GMT+0100\r\n&gt;<\/pre>\n<p>Pour 131452 documents (complexes) d&rsquo;une taille total d&rsquo;environ 1,5 GO de donn\u00e9es. Et sur un PC I7, 8Go de RAM et disque SSD.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"II22_Copie_automatique\"><\/span>II.2.2 Copie automatique<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Il existe la fonction \u00ab\u00a0Copyto\u00a0\u00bb mais elle est d\u00e9pr\u00e9ci\u00e9e depuis la version 3 (<a href=\"https:\/\/docs.mongodb.com\/manual\/reference\/method\/db.collection.copyTo\/\" target=\"_blank\">lien<\/a>).<\/p>\n<p>Donc il reste l&rsquo;import\/export (<span class=\"rendered_qtext\">mongoexport<\/span> \/ mongoimport) mais ce n&rsquo;est pas du javascript &#8230;<\/p>\n<pre>PS C:\\Program Files\\MongoDB\\Server\\3.4\\bin&gt; .\\mongoexport.exe -d \"open_food_facts\" -c \"produit\" | .\\mongoimport.exe -d \"import_test\" -c \"produit_copie\"<\/pre>\n<p>Mais ce type de commande en pipeline n\u00e9cessite de la ram sinon :<\/p>\n<pre>2017-02-15T19:45:39.671+0100    import_test.produit_copie       0B\r\n2017-02-15T19:45:42.671+0100    import_test.produit_copie       0B\r\n\u00c9chec de l'ex\u00e9cution du programme \u00ab mongoimport.exe \u00bb : Une exception de type 'System.OutOfMemoryException' a \u00e9t\u00e9 lev\u00e9e\r\n.\r\nAu niveau de ligne : 1 Caract\u00e8re : 72\r\n+ .\\mongoexport.exe -d \"open_food_facts\" -c \"produit\" | .\\mongoimport.exe &lt;&lt;&lt;&lt;  -d \"import_test\" -c \"produit_copie\" .\r\nAu niveau de ligne : 1 Caract\u00e8re : 1\r\n+  &lt;&lt;&lt;&lt; .\\mongoexport.exe -d \"open_food_facts\" -c \"produit\" | .\\mongoimport.exe -d \"import_test\" -c \"produit_copie\"\r\n    + CategoryInfo          : ResourceUnavailable: (:) [], ApplicationFailedException\r\n    + FullyQualifiedErrorId : NativeCommandFailed<\/pre>\n<p>Donc allons y \u00e0 la main !<\/p>\n<p>Export de la collection :<\/p>\n<pre> .\\mongoexport.exe -d \"open_food_facts\" -c \"produit\" -o D:\\mongodb\\export.json<\/pre>\n<p>Dur\u00e9e export : 6 mn.<\/p>\n<p>Import de la collection :<\/p>\n<pre>.\\mongoimport.exe -d \"import_test\" -c \"produit_copie\" --file  D:\\mongodb\\export.json<\/pre>\n<p>dur\u00e9e Import :  2mn 15s &#8230;<\/p>\n<p><strong>Bilan :<\/strong>  8mn environ <strong>comme en Javascript<\/strong> !<\/p>\n<p>Remarque importante : les indexs ne sont pas copi\u00e9s !!! Il faut passer par un dump et non un export si l&rsquo;on veut tout copier (index,etc.).<\/p>\n<h1><span class=\"ez-toc-section\" id=\"III_Export_de_donnees_dans_un_fichier_texte\"><\/span>III Export de donn\u00e9es dans un fichier texte<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Il n&rsquo;est pas possible de faire un export directement en Javascript. Mais il est possible de rediriger l&rsquo;\u00e9criture console vers un fichier. Donc l&rsquo;op\u00e9ration sera l&rsquo;\u00e9xecution d&rsquo;un script js en ligne de commande par le client mongo.<\/p>\n<p>Le script ci-dessous parcourt l&rsquo;ensemble des documents et en extrait certaines propri\u00e9t\u00e9s ou en calcule d&rsquo;autres.<\/p>\n<p>[pastacode lang=\u00a0\u00bbjavascript\u00a0\u00bb manual=\u00a0\u00bb%2F%2Fselection%20de%20la%20base%20de%20donn%C3%A9es%0Avar%20db_food%20%3D%20db.getSiblingDB(&lsquo;open_food_facts&rsquo;)%0A%0Avar%20critere_recherche%20%3D%20%7B%7D%3B%0Avar%20tab_champs_remontee%20%3D%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20_id%3A1%2C%0A%20%20%20%20%20%20%20%20brands%3A1%2C%0A%20%20%20%20%20%20%20%20complete%3A1%2C%0A%20%20%20%20%20%20%20%20product_name%3A1%2C%0A%20%20%20%20%20%20%20%20quantity%3A1%2C%0A%20%20%20%20%20%20%20%20images%3A1%2C%0A%20%20%20%20%20%20%20%20ingredients_text%3A1%2C%0A%20%20%20%20%20%20%20%20scans_n%3A1%0A%20%20%20%20%20%7D%3B%0A%0Avar%20prefixe_url_image%20%3D%20%22https%3A%2F%2Fstatic.openfoodfacts.org%2Fimages%2Fproducts%2F%22%3B%0A%0A%2F%2F%20lancer%20la%20recherche%0Avar%20curseur%20%3D%20db_food.produit.find(%20critere_recherche%2C%20tab_champs_remontee)%3B%0A%0Avar%20texte%20%3D%20%22%22%3B%0Avar%20sep%20%20%20%3D%20%22%5Ct%22%3B%0Avar%20cpt%20%20%20%3D%200%3B%0A%2F%2F%20Parcours%20du%20r%C3%A9sultat%0Awhile%20(%20curseur.hasNext()%20)%20%7B%0A%20%20%20%20%2F%2F%20r%C3%A9cup%C3%A8re%20le%20document%20en%20cours%0A%20%20%20%20var%20doc%20%3D%20curseur.next()%3B%0A%20%20%20%20%0A%20%20%20%20var%20brands%20%20%20%20%20%20%20%20%20%20%20%3D%20%22%3F%22%3B%20%20%2F%2F%20marque%0A%20%20%20%20var%20complete%20%20%20%20%20%20%20%20%20%3D%20%22%3F%22%3B%20%20%2F%2F%20fiche%20complete%0A%20%20%20%20var%20product_name%20%20%20%20%20%3D%20%22%3F%22%3B%20%20%2F%2F%20nom%20produit%0A%20%20%20%20var%20quantity%20%20%20%20%20%20%20%20%20%3D%20%22%3F%22%3B%20%20%2F%2F%20poids%20%0A%20%20%20%20var%20ingredients_text%20%3D%20%22%3F%22%3B%20%20%2F%2F%20ingr%C3%A9dient%0A%20%20%20%20var%20rev%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%22%3F%22%3B%20%20%20%2F%2F%20version%20image%0A%20%20%20%20var%20size_100%20%20%20%20%20%20%20%20%20%3D%20false%3B%20%2F%2F%20image%20en%20100%0A%20%20%20%20var%20size_200%20%20%20%20%20%20%20%20%20%3D%20false%3B%20%2F%2F%20image%20en%20200%0A%20%20%20%20var%20size_400%20%20%20%20%20%20%20%20%20%3D%20false%3B%20%2F%2F%20image%20en%20400%20%20%0A%20%0A%20%20%20%20var%20url_image%20%20%20%20%20%20%20%20%3D%20%22%3F%22%3B%0A%20%20%20%20%0A%20%20%20%20var%20ligne%20%3D%20%22%22%3B%0A%0A%20%20%20%20%2F%2F%20&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-%0A%20%20%20%20%2F%2F%20r%C3%A9cup%C3%A9ration%20propriet%C3%A9s%20simples%0A%20%20%20%20if%20(%20doc.hasOwnProperty(&lsquo;brands&rsquo;))%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20brands%20%20%20%20%20%20%20%20%20%20%20%20%3D%20doc.brands%3B%20%7D%0A%20%20%20%20if%20(%20doc.hasOwnProperty(&lsquo;complete&rsquo;))%20%20%20%20%20%20%20%20%20%20%20%7B%20complete%20%20%20%20%20%20%20%20%20%20%3D%20doc.complete%3B%20%7D%0A%20%20%20%20if%20(%20doc.hasOwnProperty(&lsquo;product_name&rsquo;))%20%20%20%20%20%20%20%7B%20product_name%20%20%20%20%20%20%3D%20doc.product_name%3B%20%7D%0A%20%20%20%20if%20(%20doc.hasOwnProperty(&lsquo;quantity&rsquo;))%20%20%20%20%20%20%20%20%20%20%20%7B%20quantity%20%20%20%20%20%20%20%20%20%20%3D%20doc.quantity%3B%20%7D%0A%20%20%20%20if%20(%20doc.hasOwnProperty(&lsquo;ingredients_text&rsquo;))%20%20%20%7B%20ingredients_text%20%20%3D%20doc.ingredients_text%3B%20%7D%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%2F%2F%20&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-%0A%20%20%20%20%2F%2F%20cherche%20si%20image%20scan%20existe%0A%20%20%20%20if(doc.images)%7B%0A%20%20%20%20%20%20if%20(doc.images.front_fr)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(doc.images.front_fr.hasOwnProperty(&lsquo;rev&rsquo;))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20A%20ce%20stade%20un%20num%C3%A9ro%20de%20r%C3%A9vision%20existe%20!%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20rev%20%3D%20doc.images.front_fr.rev%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20if%20(doc.images.front_fr.sizes)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(doc.images.front_fr.sizes%5B100%5D)%20%7B%20size_100%20%3D%20true%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(doc.images.front_fr.sizes%5B200%5D)%20%7B%20size_200%20%3D%20true%3B%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(doc.images.front_fr.sizes%5B400%5D)%20%7B%20size_400%20%3D%20true%3B%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20%2F%2F%20&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-%0A%20%20%20%20%2F%2F%20scan%20existe%20&#8211;%3E%20construction%20du%20chemin%20pour%20y%20acc%C3%A9der%0A%20%20%20%20if%20(size_100)%20%7B%0A%20%20%20%20%20%20%20%20var%20numero%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20code%20barre%20%C3%A0%208%20chiffres%0A%20%20%20%20%20%20%20%20if%20(doc._id.length%3D%3D8)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20numero%20%3D%20doc._id%20%2B%20%22%2F%22%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%2F%2F%20code%20barre%20%C3%A0%2013%20chiffres%0A%20%20%20%20%20%20%20%20if%20(doc._id.length%3D%3D13)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20numero%20%3D%20doc._id.substr(0%2C3)%20%2B%20%22%2F%22%20%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20numero%20%2B%3D%20doc._id.substr(3%2C3)%20%2B%20%22%2F%22%20%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20numero%20%2B%3D%20doc._id.substr(6%2C3)%20%2B%20%22%2F%22%20%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20numero%20%2B%3D%20doc._id.substr(9%2C4)%20%2B%20%22%2F%22%20%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20url_image%20%3D%20prefixe_url_image%20%2B%20numero%20%2B%20%22front_fr.%22%20%2B%20rev%20%2B%20%22.100.jpg%22%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-%0A%20%20%20%20%2F%2F%20Construction%20ligne%20export%0A%0A%20%20%20%20ligne%20%2B%3D%20cpt%20%2B%20sep%3B%0A%20%20%20%20ligne%20%2B%3D%20doc._id%20%2B%20sep%3B%0A%20%20%20%20ligne%20%2B%3D%20brands%20%2B%20sep%3B%0A%20%20%20%20ligne%20%2B%3D%20complete%20%2B%20sep%3B%0A%20%20%20%20ligne%20%2B%3D%20product_name%20%2B%20sep%3B%0A%20%20%20%20ligne%20%2B%3D%20quantity%20%2B%20sep%3B%0A%20%20%20%20ligne%20%2B%3D%20ingredients_text%20%2B%20sep%3B%20%20%20%0A%20%20%20%20ligne%20%2B%3D%20rev%20%2B%20sep%3B%20%20%20%20%20%20%0A%20%20%20%20ligne%20%2B%3D%20size_100%20%2B%20sep%3B%0A%20%20%20%20ligne%20%2B%3D%20size_200%20%2B%20sep%3B%0A%20%20%20%20ligne%20%2B%3D%20size_400%20%2B%20sep%3B%20%20%20%20%0A%2F%2F%20%20%20%20ligne%20%2B%3D%20url_image%20%2B%20sep%3B%0A%20%20%20%20%0A%20%20%20%20%2F%2F%20suppression%20des%20retours%20chariots%0A%20%20%20%20ligne%20%3D%20ligne.replace(new%20RegExp(%22%5Cn%22%2C%20&rsquo;g&rsquo;)%20%2C%22%22)%3B%0A%20%20%20%20ligne%20%3D%20ligne.replace(new%20RegExp(%22%5Cr%22%2C%20&rsquo;g&rsquo;)%20%2C%22%22)%3B%0A%20%20%20%20%0A%20%20%20%20%2F%2F%20affichage%20r%C3%A9sultat%0A%20%20%20%20print(ligne)%3B%0A%20%20%20%20%0A%20%20%20%20cpt%20%2B%2B%3B%0A%7D%0A%0A%2F%2F%20deconnexion%0Avar%20res%20%3D%20db_food.logout()%3B%0A%0A\u00a0\u00bb message=\u00a0\u00bb\u00a0\u00bb highlight=\u00a0\u00bb\u00a0\u00bb provider=\u00a0\u00bbmanual\u00a0\u00bb\/]<\/p>\n<p>Lancement du script :<\/p>\n<p>Supposons que le script soit stock\u00e9 dans le chemin suivant : D:\\mongodb\\data\\script\\export_data.js<\/p>\n<p>Alors la ligne de commande sera :<\/p>\n<pre>PS C:\\Program Files\\MongoDB\\Server\\3.4\\bin&gt; .\\mongo.exe 127.0.0.1\/open_food_facts D:\\mongodb\\data\\script\\export_data.js &gt; D:\\mongodb\\data\\script\\export_data.txt<\/pre>\n<p>Pour \u00e9viter d&rsquo;avoir ces lignes en d\u00e9but de fichier :<\/p>\n<pre>MongoDB shell version v3.4.2\r\nconnecting to: mongodb:\/\/127.0.0.1\/open_food_facts\r\nMongoDB server version: 3.4.2\r\n<em>0    3560070764945    Carrefour    1    Boudin noir aux pommes \u251c\u00e1 l'ancienne    250 g    Sang frais de porc, gras de porc, pur\u251c\u00aee de pommes 11 %, d\u251c\u00aes de pommes 10 %, oignon, t\u251c\u00acte de porc cuite, _lait_, couenne de porc, sucre, sel, poivre gris, cannelle, enveloppe : boyau naturel de porc.    6    true    true    true    \r\n1    3560070765034    Carrefour    1    Boudin Noir aux oignons \u251c\u00e1 l'ancienne    375 g    Sang frais de porc, oignon 30 %, gras de porc, t\u251c\u00acte de porc cuite, _lait_, sel, persil, poivre gris, m\u251c\u00aelange 4 \u251c\u00aepices (cannelle, girofle, poivre, muscade), enveloppe : boyau naturel de porc.    6    true    true    true    \r\n2    3560070931385    Carrefour    0    Petit Beurre    130 g        6    true    true    true<\/em><\/pre>\n<p>Il faut ajouter l&rsquo;option <strong>&#8211;quiet <\/strong>. Ce qui donne la commande suivante :<\/p>\n<pre>.\\mongo.exe --quiet 127.0.0.1\/open_food_facts D:\\mongodb\\data\\script\\export_data.js &gt; D:\\mongodb\\data\\script\\export_data.txt<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I Introduction Exemple de scripts en JavaScript stock\u00e9 sous forme de fonctions dans MongoDB. La base de donn\u00e9es utilis\u00e9e est t\u00e9l\u00e9chargeable \u00e0 partir de l&rsquo;adresse suivante : http:\/\/world.openfoodfacts.org\/data\/openfoodfacts-mongodbdump.tar.gz L&rsquo;outil utilis\u00e9 pour stocker les fonctions js en base de donn\u00e9es est<\/p>\n","protected":false},"author":1,"featured_media":303,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-103","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-_dev"],"_links":{"self":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts\/103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=103"}],"version-history":[{"count":1,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts\/103\/revisions"}],"predecessor-version":[{"id":226,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/posts\/103\/revisions\/226"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=\/wp\/v2\/media\/303"}],"wp:attachment":[{"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogperso.union31.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}