« Mongodb » : différence entre les versions
(Page créée avec « Pour le moment je vais rester à un niveau très simple (le mien en mongo) == Utilisation == On part du principe que la base est locale (sur le serveur où on exécute les requêtes). === Connexion === On lance mongodb client <syntaxhighlight lang="bash"> mongo </syntaxhighlight>Le prompt mongo est ">". C'est un shell intelligent. Les touches de curseur sont fonctionnelles comme dans bash. L'autocomplétion avec <Tab> est aussi fonctionelle. Pour connaitre le... ») |
m (→La requête) |
||
(2 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 17 : | Ligne 17 : | ||
test 0.000GB | test 0.000GB | ||
</syntaxhighlight>On se connecte à une base:<syntaxhighlight lang="text"> | </syntaxhighlight> | ||
On se connecte à une base: | |||
<syntaxhighlight lang="text"> | |||
use local | use local | ||
switched to db local | switched to db local | ||
Ligne 32 : | Ligne 34 : | ||
... | ... | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Requetes === | |||
Les requêtes par l'interface CLI ne donne que les 20 premières lignes correspondant a une recherche. On peur avoir les 20 suivantes en tapant la commande :<syntaxhighlight lang="javascript"> | |||
it | |||
</syntaxhighlight>Cette pagination peut être modifiée par :<syntaxhighlight lang="javascript"> | |||
DBQuery.shellBatchSize = 300 | |||
</syntaxhighlight>On 300 est la nouvelle taille de la page. | |||
Pour le reste, c'est la commande find() justement qui permets les requetes. | |||
La syntaxe est : | |||
db.<collection>.find([requete[,projection[,options]]]) | |||
On a vu plus haut que find() tout seul ou find ({}) nous donne toute la collection. | |||
==== La projection ==== | |||
Le champ "projection" nous permet de n'avoir que certains enregistrements (documents je crois dans la terminologie mongo).<syntaxhighlight lang="javascript"> | |||
db.startup_log.find({},{hostname: 1}) | |||
{ "_id" : "MOIICI-1498660682291", "hostname" : "MOIICI" } | |||
{ "_id" : "MOIICI-1505738260720", "hostname" : "MOIICI" } | |||
{ "_id" : "MOIICI-1505739534853", "hostname" : "MOIICI" } | |||
{ "_id" : "MOIICI-1507630877562", "hostname" : "MOIICI" } | |||
{ "_id" : "MOIICI-1509110924292", "hostname" : "MOIICI" } | |||
{ "_id" : "MOIICI-1515085243005", "hostname" : "MOIICI" } | |||
{ "_id" : "MOIICI-1520257345819", "hostname" : "MOIICI" } | |||
{ "_id" : "MOIICI-1520257685096", "hostname" : "MOIICI" } | |||
{ "_id" : "MOIICI-1523608951012", "hostname" : "MOIICI" } | |||
{ "_id" : "MOIICI-1526479636962", "hostname" : "MOIICI" } | |||
{ "_id" : "MOIICI-1570444658931", "hostname" : "MOIICI" } | |||
</syntaxhighlight>On a bien que le champ "hostname" affiché. (_id est affiché par défaut). On peut le retirer explicitement avec "_id": 0<syntaxhighlight lang="javascript"> | |||
db.startup_log.find({},{_id: 0,hostname: 1}) | |||
{ "hostname" : "MOIICI" } | |||
{ "hostname" : "MOIICI" } | |||
{ "hostname" : "MOIICI" } | |||
{ "hostname" : "MOIICI" } | |||
{ "hostname" : "MOIICI" } | |||
{ "hostname" : "MOIICI" } | |||
{ "hostname" : "MOIICI" } | |||
{ "hostname" : "MOIICI" } | |||
{ "hostname" : "MOIICI" } | |||
{ "hostname" : "MOIICI" } | |||
{ "hostname" : "MOIICI" } | |||
</syntaxhighlight>Le champ "projection" est un peu les champs mis dans le "select" d'une requête SQL. (on choisit les colonnes) | |||
==== La requête (where clause) ==== | |||
Dans ce cas on demande seulement les lignes (documents) qui correspondent a certains critères (on choisit les lignes). | |||
Si je ne veux que la ligne dont _id est "MOIICI-1570444658931" et que je ne veuille afficher que le "startTime" et l'adresse IP de binding cmdLine.net.bindIp :<syntaxhighlight lang="javascript"> | |||
db.startup_log.find({_id:"CIEYY2X3-1570444658931"},{startTime: 1, "cmdLine.net.bindIp": 1}) | |||
{ "_id" : "CIEYY2X3-1570444658931", "startTime" : ISODate("2019-10-07T10:37:38Z"), "cmdLine" : { "net" : { "bindIp" : "127.0.0.1" } } } | |||
</syntaxhighlight> | |||
=== Les options === | |||
Plus tard |
Version actuelle datée du 26 mars 2024 à 13:45
Pour le moment je vais rester à un niveau très simple (le mien en mongo)
Utilisation
On part du principe que la base est locale (sur le serveur où on exécute les requêtes).
Connexion
On lance mongodb client
mongo
Le prompt mongo est ">".
C'est un shell intelligent. Les touches de curseur sont fonctionnelles comme dans bash. L'autocomplétion avec <Tab> est aussi fonctionelle.
Pour connaitre les bases accessibles sur la machine :
> show dbs
admin 0.000GB
local 0.000GB
test 0.000GB
On se connecte à une base:
use local
switched to db local
On peut également se connecter directement sur une base depuis la ligne de commande du shell:
mongo local
On demande la liste des "collections" :
> show collections
startup_log
Et pour voir ce qu'il y a dans la collection
> db.startup_log.find()
{ "_id" : "CIEYY2X3-1498660682291", "hostname" : "MOIICI", "startTime" : ISODate("2017-06-28T14:38:02Z"), "startTimeLocal" : "Wed Jun 28 16:38:02.291", "cmdLine" : { "command" : [ "run" ], "config" : "/etc/mongod.c
...
Requetes
Les requêtes par l'interface CLI ne donne que les 20 premières lignes correspondant a une recherche. On peur avoir les 20 suivantes en tapant la commande :
it
Cette pagination peut être modifiée par :
DBQuery.shellBatchSize = 300
On 300 est la nouvelle taille de la page.
Pour le reste, c'est la commande find() justement qui permets les requetes.
La syntaxe est :
db.<collection>.find([requete[,projection[,options]]])
On a vu plus haut que find() tout seul ou find ({}) nous donne toute la collection.
La projection
Le champ "projection" nous permet de n'avoir que certains enregistrements (documents je crois dans la terminologie mongo).
db.startup_log.find({},{hostname: 1})
{ "_id" : "MOIICI-1498660682291", "hostname" : "MOIICI" }
{ "_id" : "MOIICI-1505738260720", "hostname" : "MOIICI" }
{ "_id" : "MOIICI-1505739534853", "hostname" : "MOIICI" }
{ "_id" : "MOIICI-1507630877562", "hostname" : "MOIICI" }
{ "_id" : "MOIICI-1509110924292", "hostname" : "MOIICI" }
{ "_id" : "MOIICI-1515085243005", "hostname" : "MOIICI" }
{ "_id" : "MOIICI-1520257345819", "hostname" : "MOIICI" }
{ "_id" : "MOIICI-1520257685096", "hostname" : "MOIICI" }
{ "_id" : "MOIICI-1523608951012", "hostname" : "MOIICI" }
{ "_id" : "MOIICI-1526479636962", "hostname" : "MOIICI" }
{ "_id" : "MOIICI-1570444658931", "hostname" : "MOIICI" }
On a bien que le champ "hostname" affiché. (_id est affiché par défaut). On peut le retirer explicitement avec "_id": 0
db.startup_log.find({},{_id: 0,hostname: 1})
{ "hostname" : "MOIICI" }
{ "hostname" : "MOIICI" }
{ "hostname" : "MOIICI" }
{ "hostname" : "MOIICI" }
{ "hostname" : "MOIICI" }
{ "hostname" : "MOIICI" }
{ "hostname" : "MOIICI" }
{ "hostname" : "MOIICI" }
{ "hostname" : "MOIICI" }
{ "hostname" : "MOIICI" }
{ "hostname" : "MOIICI" }
Le champ "projection" est un peu les champs mis dans le "select" d'une requête SQL. (on choisit les colonnes)
La requête (where clause)
Dans ce cas on demande seulement les lignes (documents) qui correspondent a certains critères (on choisit les lignes).
Si je ne veux que la ligne dont _id est "MOIICI-1570444658931" et que je ne veuille afficher que le "startTime" et l'adresse IP de binding cmdLine.net.bindIp :
db.startup_log.find({_id:"CIEYY2X3-1570444658931"},{startTime: 1, "cmdLine.net.bindIp": 1})
{ "_id" : "CIEYY2X3-1570444658931", "startTime" : ISODate("2019-10-07T10:37:38Z"), "cmdLine" : { "net" : { "bindIp" : "127.0.0.1" } } }
Les options
Plus tard