MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Transformer les données MongoDB lors de la recherche

Il est possible de faire à peu près n'importe quoi côté serveur avec mongodb. La raison pour laquelle vous entendrez généralement "non" est que vous sacrifiez trop de vitesse pour que cela ait un sens dans des circonstances ordinaires. L'une des principales forces derrière PyMongo, Mike Dirolf avec 10gen, a un bon article de blog sur l'utilisation de javascript côté serveur avec pymongo ici :http://dirolf.com/2010/04/05/stored-javascript-in-mongodb-and-pymongo.html . Son exemple est de stocker une fonction javascript pour renvoyer la somme de deux champs. Mais vous pouvez facilement modifier pour renvoyer la première lettre de votre champ de nom d'utilisateur. L'essentiel serait quelque chose comme :

db.system_js.first_letter = "function (x) { return x.charAt(0); }"

Comprenez d'abord, cependant, que mongodb est fait pour être vraiment bon pour récupérer vos données, pas vraiment bon pour les traiter. La recommandation (voir par exemple 50 trucs et astuces pour les développeurs mongodb de Kristina Chodorow par Oreilly) est de faire ce qu'Andrew a brièvement évoqué ci-dessus :créer une première colonne de lettres et la renvoyer à la place. Tout traitement peut être effectué plus efficacement dans l'application.

Mais si vous pensez que même demander le nom complet avant de renvoyer fullname[0] de votre 'view' présente trop de risques pour la sécurité, vous n'avez pas besoin de tout faire le plus rapidement possible. J'avais évité map-reduce dans mongodb pendant un certain temps à cause de toutes les préoccupations du public concernant la vitesse. Ensuite, j'ai exécuté ma première réduction de carte et me suis tourné les pouces pendant 0,1 seconde alors qu'elle traitait 80 000 documents de 10 000. Je me rends compte dans l'ordre des choses, c'est minuscule. Mais cela illustre que ce n'est pas parce qu'il est mauvais pour un site Web massif de subir une baisse de performances sur certains traitements côté serveur que cela vous importerait. Dans mon cas, j'imagine qu'il me faudrait un peu plus de temps pour migrer vers Hadoop que de simplement manger cette 0,1 seconde de temps en temps. Bonne chance avec votre site