Mongo cli

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Shell moderne mongosh
Shell historique mongo (retiré depuis MongoDB 6.0)
Export/import mongodump / mongorestore
Voir aussi MongoDB · Mongo init · Mongodb php

Le shell mongo (remplacé par mongosh dans les versions récentes de MongoDB) est la console interactive JavaScript permettant de se connecter à une instance, de naviguer dans les bases/collections et d'exécuter des commandes d'administration ou de manipulation de documents.

Connexion

mongosh
# ou, sur une installation ancienne :
mongo

La connexion peut aussi se faire par programmation depuis le shell, via le constructeur Mongo() puis getDB() :

var conn = new Mongo();
var db = conn.getDB("mabase");
db
show collections

Rechercher des documents

// Recherche avec projection : exclut le champ "comments" du résultat
db.articles.find({ titre: "MongoDB exemple" }, { comments: 0 });

Commandes de la console

Commande Effet
help affiche l'aide de la console
show dbs liste les bases de données
show collections liste les collections de la base courante
show users liste les utilisateurs de la base courante
use <base> bascule la base courante
it réaffiche le résultat de la dernière commande (pour itérer un curseur)

Méthodes de base de données (db.*)

Méthode Effet
db.createUser(user) crée un utilisateur (remplace l'ancien db.addUser(), retiré)
db.auth(user, pwd) authentification sur la connexion courante
db.getCollectionNames() liste les collections
db.createCollection(name, options) crée une collection (utile pour une collection cappée/taille fixe)
db.currentOp() affiche les opérations en cours sur l'instance
db.dropDatabase() supprime la base courante
db.getReplicationInfo() informations de réplication (oplog)
db.repairDatabase() tente de réparer la base (opération lourde, hors ligne)
db.serverStatus() état détaillé du serveur
db.stats() statistiques de la base
db.version() version du serveur
db.shutdownServer() arrête l'instance

Note : db.addUser()/db.getMongo().setSlaveOk() et les autres méthodes liées à l'ancien mode maître/esclave sont obsolètes (voir MongoDB) — ne pas les reprendre sur une installation actuelle.

Méthodes de collection (db.<collection>.*)

Méthode Effet
find(query, projection) recherche de documents, avec filtre et projection des champs retournés
findOne(query) retourne le premier document trouvé
count() nombre de documents
distinct(champ) valeurs distinctes d'un champ
createIndex(keys, options) crée un index (remplace ensureIndex(), alias déprécié)
dropIndex(name) / dropIndexes() supprime un ou tous les index
insertOne(doc) / insertMany([docs]) insertion (remplacent insert(), déprécié)
updateOne(filtre, maj) / updateMany(filtre, maj) mise à jour (remplacent update(), déprécié)
deleteOne(filtre) / deleteMany(filtre) suppression (remplacent remove(), déprécié)
drop() supprime la collection entière
stats() statistiques de la collection (taille, index...)
aggregate(pipeline) pipeline d'agrégation (remplace mapReduce(), déprécié depuis 5.0)

Import / export

mongodump -d nom_base -o /chemin/vers/repertoire
mongorestore -d nom_base /chemin/vers/repertoire

Exemples

Insertion et lecture :

var j = { name: "mongo" };
db.things.insertOne(j);

var cursor = db.things.find();
while (cursor.hasNext()) { print(tojson(cursor.next())); }

db.things.find().forEach(function(x) { printjson(x); });

Équivalence avec une requête SQL, pour se repérer :

-- select * from things where name = 'mongo'
db.things.find({ name: "mongo" }).forEach(printjson);

Tri et limite :

db.things.find().sort({ x: 1 });   // croissant
db.things.find().sort({ x: -1 });  // décroissant
db.things.find().limit(3);

Mise à jour avec upsert (crée le document s'il n'existe pas) :

db.users.updateOne(
  { _id: "id_utilisateur" },
  { $set: { api_token: "nouveau_token" } },
  { upsert: true }
);

Voir aussi

  • MongoDB — panorama général
  • Mongo init — script de démarrage
  • Mongodb php — driver PHP
  • Sql — langage SQL générique, pour la comparaison de syntaxe