L’équivalent du SELECT (SQL) sur une base de données MongoDB (NoSQL)

La particularité des bases de données “non structurées” ou “orientée documents” comme MongoDB, c’est quelles sont très performantes pour de gros volumes de données (en particulier depuis l’arrivée de tous ces objets connectés).

Pour faire un petit tour d’horizon des bases de données NoSQL actuellement sur le marché (> 225 fin décembre 2015), rendez-vous sur le site http://nosql-database.org/ qui dispose d’une liste à peu près complète des produits du marché.

Je vais montrer l’équivalent (ou plutôt les deux équivalents) de mongoDB par rapport au SELECT qui est une des requêtes de base du SQL.

SQL

Structure d’un SGBD SQL

SGBD > Database > Table >Entrées (lignes)

Capture d’écran 2015-12-20 à 13.08.24

Exemple de Select

Pour rappel, la requête basique pour sélectionner le nom, prénom et l’age des utilisateurs ayant comme ville Paris en SQL :

[sql]
SELECT nom, prenom, age
FROM users
WHERE ville="Paris"
[/sql]

MONGODB

Structure d’un SGBD NoSQL

SGBD > Database > Collections > Documents

Capture d’écran 2015-12-20 à 13.09.46

db.collection.find(query, projection)

Le premier paramètre de la fonction find() est un objet au format JSON qui va permettre de filtrer les résultats (un peu comme le where en SQL). Le second paramètre permet de retourner seulement certains champs, il est donc similaire aux valeurs qui suivent le mot clé SELECT en SQL. On peut également ajouter des conditions comme supérieur à, inférieur ou égal à, etc…

  • $gt = supérieur à
  • $lt = inférieur à
  • $gte = supérieur ou égal à
  • $lte = inférieur ou égal à

Quelques exemples :

[javascript]
// All
var res = db.users.find( );

// Paris as city
var res = db.users.find( { ville: "Paris" } );

// Older than…
var res = db.users.find( { ville: "Paris", age: { $gte:20 } } );

// Don’t return all dataset, only the name
var res = db.users.find( { ville: "Paris" }, { name: true } );

// Same as findOne()
var res = db.users.find( { nom: "Bronner", prenom: "Joey" }).limit(1);
[/javascript]

db.collection.findOne(query, projection)

La requête findOne() est différente puisqu’une fois exécutée, elle va retourner les données et fermer le curseur. Au contraire de la requête find() (même en utilisant la syntaxe find().limit(1)) qui retourne un curseur. Il faut également savoir que sans argument, findOne() retourne un document quelconque de la collection. Ce type de requête sans argument peut donc être utilisé pour constater la structure des documents.

[javascript]
// All
var res = db.users.findOne( { nom: "Bronner", prenom: "Joey" });
[/javascript]

Il n’y a pas grand chose à ajouter, c’est simple comme bonjour. Ah si j’oubliais, si vous êtes en train de faire ou refaire votre CV et que vous n’avez pas de compétences avancées en SQL, mettez que vous êtes expert en NoSQL 🙂

nosql-expert

65 Comments L’équivalent du SELECT (SQL) sur une base de données MongoDB (NoSQL)

  1. slot online

    Ꭲhаnks for the good writеup. Ӏt іn ruth was a entertainment
    account it. Glance complicated to more introduced agreeable from you!
    By tһe way, hoow could we kdep in touch?

    Reply
  2. joker123

    Heya i’m foг the primary time here. І came across this board and I in fijnding It really useful & it helpеd me out a
    lot. I’m hopig to provide one thing back and helρ
    others such as yyou helped me.

    Reply
  3. info lebih lengkap

    You can definitely sеe your expertise in the work you write.
    The ѕect᧐r hopes for even more passionate writers liқe
    you who аre not afraid to ssay hhow they believe. All the time
    go after your heaгt.

    Reply
  4. 유흥구인구직

    Hi, Neat post. There’s an issue along with your site in internet explorer, might check this?

    IE nonetheless is the marketplace chief and a huge portion of folks will omit your magnificent writing due to this problem.

    Reply
  5. Download joker338 apk

    Saya telah telah berselancar online lebih dari 2 jam hari
    ini, namun saya tidak pernah menemukan artikel menarik seperti milik
    Anda. It is cukup berharga bagi saya. Secara
    pribadi , jika semua pemilik situs web dan blogger membuat konten yang baik seperti
    yang Anda lakukan, internet akan menjadi lebih berguna dari sebelumnya.

    Here is my homepage :: Download joker338 apk

    Reply
  6. wukong333 slot

    Hmm is anyone else encountering problems with the pictures on this blog
    loading? I’m trying to determine if its a problem on my end or if it’s the blog.
    Any responses would be greatly appreciated.

    Also visit my web blog :: wukong333 slot

    Reply
  7. 파워볼게임

    It’s actually a cool and helpful piece of information. I’m glad that you just shared this
    helpful information with us. Please keep us informed like this.
    Thank you for sharing.

    Reply
  8. love138 download

    Thanks for ones marvelous posting! I certainly enjoyed reading it, you may be a great author.I will make certain to bookmark your blog and will eventually come back later in life.
    I want to encourage you to ultimately continue your great job, have a nice evening!

    My blog – love138 download

    Reply
  9. Joker3999 apk download

    Saya telah berselancar online lebih dari 2 jam hari ini,
    namun saya tidak pernah menemukan artikel menarik seperti milik Anda.
    It’s cukup berharga bagi saya. Secara pribadi , jika
    semua pemilik web dan blogger membuat konten yang baik seperti yang
    Anda lakukan, internet akan menjadi lebih berguna
    dari sebelumnya.

    Here is my homepage – Joker3999 apk download

    Reply
  10. situs slot

    Thanks for the maгvelous posting! I actually enjoyed eading it, you might be a great author.I will maake sure to bookmark your blߋց and
    will eventualy come back in the future. I want to еncourage you to ultimately continue
    your ցreat work, havе a niсe holidaay weeқend!

    Reply
  11. id Akaun Test lpe88

    Its like you read my mind! You appear to know so much about this, like
    you wrote the book in it or something. I think that you could
    do with a few pics to drive the message home a bit, but instead of
    that, this is magnificent blog. An excellent
    read. I’ll definitely be back.

    Check out my webpage; id Akaun Test lpe88

    Reply
  12. Felipa

    I absolutely love your blog and find most of your post’s to be exactly what I’m looking for.
    Does one offer guest writers to write content for you?
    I wouldn’t mind publishing a post or elaborating on a number of the subjects you write with regards to here.
    Again, awesome blog!

    Reply
  13. Stanley

    You can definitely see your skills in the work you write.
    The sector hopes for more passionate writers like you who
    are not afraid to mention how they believe. Always follow your heart.

    Reply

Leave a Reply

Your email address will not be published.