MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Transformieren Sie MongoDB-Daten bei Find

Mit mongodb ist es möglich, fast alles serverseitig zu tun. Der Grund, warum Sie normalerweise "nein" hören, ist, dass Sie zu viel Geschwindigkeit opfern, als dass es unter normalen Umständen Sinn machen würde. Einer der Hauptakteure hinter PyMongo, Mike Dirolf von 10gen, hat hier einen guten Blogbeitrag über die Verwendung von serverseitigem Javascript mit Pymongo:http://dirolf.com/2010/04/05/stored-javascript-in-mongodb-and-pymongo.html . Sein Beispiel ist das Speichern einer Javascript-Funktion, um die Summe zweier Felder zurückzugeben. Aber Sie könnten es leicht ändern, um den ersten Buchstaben Ihres Benutzernamensfelds zurückzugeben. Das Wesentliche wäre so etwas wie:

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

Verstehen Sie jedoch zuerst, dass Mongodb wirklich gut darin ist, Ihre Daten abzurufen, nicht wirklich gut darin, sie zu verarbeiten. Die Empfehlung (siehe zum Beispiel 50 Tipps und Tricks für Mongodb-Entwickler von Kristina Chodorow von Oreilly) ist, das zu tun, worauf Andrew oben knapp angespielt hat:eine erste Buchstabenspalte erstellen und diese stattdessen zurückgeben. Jegliche Verarbeitung kann in der Anwendung effizienter durchgeführt werden.

Aber wenn Sie der Meinung sind, dass selbst die Abfrage des vollständigen Namens vor der Rückgabe von fullname[0] aus Ihrer 'Ansicht' ein zu großes Sicherheitsrisiko darstellt, müssen Sie nicht alles so schnell wie möglich tun. Wegen all der öffentlichen Bedenken bezüglich der Geschwindigkeit hatte ich Map-Reduce in Mongodb für eine Weile vermieden. Dann habe ich meine erste Map-Reduzierung ausgeführt und 0,1 Sekunden lang mit den Daumen gedreht, während 80.000 10k-Dokumente verarbeitet wurden. Ich erkenne im Schema der Dinge, das ist winzig. Aber es zeigt, dass nur weil es für eine riesige Website schlecht ist, einen Leistungseinbruch bei einigen serverseitigen Verarbeitungen zu erleiden, es nicht bedeutet, dass es für Sie wichtig wäre. In meinem Fall stelle ich mir vor, dass ich etwas länger brauchen würde, um zu Hadoop zu migrieren, als nur hin und wieder diese 0,1 Sekunden zu essen. Viel Glück mit Ihrer Website