Aller au contenu

NOUVEAUIshedDB 1.0 : venez de MongoDB avec vos données, copie vérifiée document par document. En savoir plus →

Le shell ished

ished est le terminal d'IshedDB, comme mongosh pour MongoDB, avec ses outils pour exporter, importer, sauvegarder et restaurer, comme mongoexport, mongoimport, mongodump et mongorestore. Un seul fichier, sans installation : il demande Node.js 22 ou plus récent.

L'obtenir

Dans la console, Vue d'ensemble › « Obtenir l'adresse de connexion » › langage « Shell ished » : le lien de téléchargement de ished.mjs et la commande prête, avec l'adresse de votre IshedDB. Autorisez d'abord l'adresse IP de votre ordinateur (le bandeau « Autoriser mon adresse IP » le fait en un clic).

node ished.mjs https://votre-ished.example

Votre clé vous est demandée, sans être affichée. Elle n'est jamais une option de la commande : elle resterait dans l'historique de votre terminal. Pour un script, mettez-la dans la variable ISHED_KEY, ou dans un fichier lisible par vous seul : --keyFile cle.txt (le shell refuse un fichier lisible par d'autres).

Le terminal

ished test> show dbs
Clinique  120.00 Kio
ished test> use Clinique
Base courante : Clinique
ished Clinique> db.patients.find({ ville: 'Dakar' }, { _id: 0, nom: 1 }).sort({ nom: 1 })
[ { nom: 'Awa Diop' }, { nom: 'Fatou Ndiaye' } ]
ished Clinique> db.patients.countDocuments()
3
CommandeCe qu'elle fait
show dbsles bases du cluster et leur taille
show collectionsles collections et les vues de la base courante
use <base>change de base courante
dble nom de la base courante
itla suite du dernier résultat (20 documents à la fois)
helpl'aide ; exit pour quitter, cls pour effacer

Chaque ligne est du JavaScript, et peut attendre (await) ; ce qui est déclaré reste. Sur db.<collection> : find, findOne, insertOne, insertMany, updateOne, updateMany, replaceOne, deleteOne, deleteMany, bulkWrite, countDocuments, distinct, aggregate, createIndex, getIndexes, dropIndex, drop. Sur db : getCollectionNames(), createCollection, createView, dropDatabase, runCommand, getSiblingDB. Et ISODate(), ObjectId(), UUID(), NumberLong(), EJSON, print, printjson, sleep, load('script.js').

L'historique est gardé dans votre dossier personnel (.ished/historique_shell, lisible par vous seul), sans les lignes qui peuvent tenir un secret (clé, mot de passe, jeton).

Un script

export ISHED_URL=https://votre-ished.example
node ished.mjs --eval "db.patients.countDocuments({ ville: 'Dakar' })" -d Clinique
node ished.mjs rapport.js -d Clinique

Exporter et importer

node ished.mjs export -d Clinique -c patients -o patients.json
node ished.mjs export -d Clinique -c patients --type csv -f nom,ville,adresse.quartier -o patients.csv
node ished.mjs import -d Copie -c patients --file patients.json
node ished.mjs import -d Clinique -c patients --type csv --headerline --file patients.csv --mode upsert --upsertFields nom
  • export : JSON (un document par ligne, en Extended JSON ; --jsonArray pour une liste, --pretty, --jsonFormat canonical), ou CSV avec --fields. --query, --sort, --skip, --limit. Les champs cachés ne sortent que nommés dans --reveal.
  • import : JSON, y compris un export de MongoDB ($oid, $date, $numberLong, $numberDecimal, $binary…), CSV et TSV (--headerline ou --fields, les nombres reconnus, ou des colonnes typées avec --columnsHaveTypes : nom.string(), âge.int32(), né.date(2006-01-02)…). --mode insert (par défaut), upsert, merge ou delete, --drop pour vider la collection d'abord, --stopOnError pour s'arrêter au premier refus.

Sauvegarder et restaurer

node ished.mjs dump -o sauvegarde
node ished.mjs dump -d Clinique --gzip -o sauvegarde-clinique
node ished.mjs restore sauvegarde --drop

dump écrit un dossier par base : les documents de chaque collection et sa définition (index, validateur, champs cachés, horodatage, expiration), et les vues. Les fichiers tiennent vos données, champs cachés compris : ils ne sont lisibles que par vous. restore remet les définitions, les documents avec leurs identifiants, puis les vues ; il demande une clé d'administration. Sans --drop, les documents déjà présents sont gardés et comptés.

Une sauvegarde chiffrée de chaque cluster est déjà faite chaque nuit par IshedDB, et le palier Dédié revient à n'importe quel instant des derniers jours (page Sauvegarde de la console) : dump sert à garder une copie chez vous ou à déplacer des données.

node ished.mjs --help, node ished.mjs export --help (et import, dump, restore) donnent toutes les options.