Après avoir lu un livre général sur le NoSQL, (Making Sense of NoSQL), j’étais intéressé à lire un livre axé sur un produit plutôt que sur la théorie. Mon choix s’est facilement arrêté sur MongoDB puisque nous l’utilisons un peu au travail.
MongoDB in Action est un livre qui couvre MongoDB de long et en large. Quelles sont ses forces et faiblesses versus un produit SQL traditionnel, comment écrire des requêtes, comment l’installer, comment « sharder » (une des forces de MongoDB), comment indexer, comment analyser les performances, etc.
Est-ce que je le recommande? Oui, et pas seulement à quelqu’un qui s’intéresse à MongoDB en particulier, mais à tout programmeur qui ne connaît pas le NoSQL car c’est un exemple concret des possibilités qu’il offre. Il vaut mieux connaître les outils et ne pas les choisir en connaissance de cause que de les rejeter par ignorance.
Maintenant, je m’écarte de la revue du livre pour écrire une note à moi-même (et à tous) sur les requêtes « updates » en MongoDB. Elles ont un potentiel très destructeur si on s’attend à ce qu’elles fonctionnent comme le SQL par défaut. Par exemple, le document suivant
{ "_id" : 1, "a" : "A-ta-boy", "b" : "Banane" }
Et la requête suivante:
collection.update({ "_id" : 1 }, { "b" : "Bowling" });
Quel sera le résultat? Est-ce que « b » prendra simplement la valeur de « Bowling »? NOOOON!!!
{ "_id" : 1, "b" : "Bowling" }
Un « update », par défaut, remplace le contenu du document en entier plutôt que juste la clé visée. Voici ce qu’il faut faire pour définir la valeur à mettre à jour plutôt que le document en entier.
collection.update({ "_id" : 1 }, { "$set" : { "c" : "Chopine" } });
Ce qui donne
{ "_id" : 1, "b" : "Bowling", "c" : "Chopine" }
J’ai appris ça en production. 😉
Computers
Manning Publications
2012-01
287