Skip to content
Julien GuezNet edited this page May 25, 2018 · 1 revision

Source : https://buzut.developpez.com/tutoriels/apprendre-commandes-de-base-de-mongodb/

# afficher toutes les bases de données
show dbs

# utiliser la base "madatabase"
use madatabase

# voir dans quelle base on est
db

# afficher les collections
show collections

# renommer une collection
db.oldname.renameCollection("newname")

# effacer une collection
db.contacts.drop()

# effacer la base dans laquelle on est
db.dropDatabase()

# insertion 
db.contacts.insert({ first: 'Quentin', last: 'Busuttil' })

# sélection
db.contacts.find()
db.contacts.find({ first: 'quentin' })
db.contacts.find({ first: 'quentin', last: 'busuttil' })

# sélectionner les documents dont un array contient une valeur x
db.contacts.find({ tags: 'business' })

# ou un élément parmi plusieurs
db.contacts.find({ tags: { $in: ['business', 'french'] } })

# ou la combinaison de plusieurs
db.contacts.find({ tags: { $all: ['business', 'french'] } })

# sous cette forme l'array correspond exactement à cela (ordre des éléments compris)
db.contacts.find({ tags: ['business', 'french'] })

# requêter selon des propriétés d'un sous-document
# admettons l'objet suivant :
# { nom: "Quentin", agenda: { lundi: "programmation", mardi: "dev", mercredi: "code" } }
# on pourra matcher depuis son sous-document ainsi (notez bien les guillemets autour de agenda.mardi)
db.users.find({ 'agenda.mardi': 'dev' })

# requêter selon un match exact de sous-document
db.users.find({ agenda: { lundi: "programmation", mardi: "dev", mercredi: "code" } })

# OR sélectionner selon une condition ou une autre
# il faut utiliser $or avec un array dont chaque élément est un objet littéral de sélection
db.users.find({ $or: [{ _id:ObjectId("558d0b395fa02e7e218b4587") }, { _id:ObjectId("558d0b395fa02e7e218b4574") }] })

# récupérer seulement certains champs d'un document
db.users.find({}, { _id: 0, fild1: 1, fild2: 0 })

# type == food || snacks
db.inventory.find({ type: { $in: ['food', 'snacks'] } })

# sélectionner les documents comportant un champ particulier
db.users.find({ birthyear: { $exists: true } })

# sélectionner les documents dont la valeur est différente de
db.users.find({ birthyear: { $ne: 2000 } })

# ne récupérer que le sous-document (récup le sous-document d'id x dans le doc d'id z)
db.users.find({ _id: z, "contacts._id": x }, { "contacts.$._id" : 1 })

# ordonner la sélection
# 1 = croissant/alphabétique et -1 = décroissant/alphabétique inversé
db.users.find().sort({ addedOn: 1 })


# update 
# on peut utiliser { multi: true } pour modifier plusieurs documents à la fois
# l'option { upsert: true } permet de créer le document s'il n'existe pas
db.users.update({ _id: x }, { $set: { "firstname": "Baboo" } })

# update en remplaçant le document par un nouvel objet 
db.users.update({ _id: 'azert' }, obj)

# update un sous-document d'id y du doc d'id x (dans un tableau de sous-documents appelé contacts), 
# on remplace le sous-doc par un autre objet
# le document à modifier ressemble ici à 
#{
#  _id: x,
#  name: azerty,
#  contacts: [
#    {
#      _id: y,
#      name: 'qwerty',
#      email: 'qwerty@heymail.fr'
#    }
#  ]
#}
db.users.update({ _id: x, "contacts._id": y }, { $set: { "contacts.$":myNewDocument } })

# effacer un champ
db.users.update({ _id: x }, { $unset: { contacts: "" } })

# renommer un champ
db.users.update({}, { $rename: { "ancien_nom": "nouveau_nom" } }, { multi: true })

# effacer un champ de tous les documents d'une collection
# correspond à ALTER TABLE users DROP COLUMN zorglub
db.users.update({}, { $unset: { zorglub: "" } }, { multi: true } )

# retirer un élément d'un tableau 
# (on retire l'ami "yyy" du tableau "friends" de l'utilisateur "xxx")
db.users.update({ _id: xxx }, { $pull: { friends: yyy } })

# on fait la même chose, mais on retire cet ami de tous les utilisateurs
# par exemple, l'ami yyy, s'est désinscrit
db.users.update({ friends: yyy }, { $pull: { friends: yyy } }, { multi: true })

# effacer un document
db.contacts.remove({ _id: ObjectId("55accc6c039c97c5db42f192") })

# effacer tous les documents d'une collection
db.contacts.remove({})

# effacer un sous-document d'id y du doc d'id x (dans un tableau de sous-documents)
db.users.update({ _id: x }, { $pull: { contacts: { _id: y } } })

# dans le même genre $pop permet d'enlever le dernier ou le premier élément d'un tableau
# respectivement en lui passant les valeurs 1 et -1
db.users.update({ _id: x }, { $pop: { contacts: -1 } })


# les utilisateurs qui se sont enregistrés après le 15 septembre 2015 à 13h20.
db.users.find({ signupDate: { $gte: ISODate("2015-09-15T13:20:00.000Z") } })