Dimungkinkan untuk melakukan apa saja di sisi server dengan mongodb. Alasan Anda biasanya akan mendengar "tidak" adalah karena Anda mengorbankan terlalu banyak kecepatan untuk membuatnya masuk akal dalam keadaan biasa. Salah satu kekuatan utama di balik PyMongo, Mike Dirolf dengan 10gen, memiliki posting blog yang bagus tentang penggunaan javascript sisi server dengan pymongo di sini:http://dirolf.com/2010/04/05/stored-javascript-in-mongodb-and-pymongo.html . Contohnya adalah untuk menyimpan fungsi javascript untuk mengembalikan jumlah dari dua bidang. Tetapi Anda dapat dengan mudah memodifikasi untuk mengembalikan huruf pertama dari bidang nama pengguna Anda. Intinya akan seperti:
db.system_js.first_letter = "function (x) { return x.charAt(0); }"
Pahami dulu, bahwa mongodb dibuat untuk benar-benar baik dalam mengambil data Anda, tidak terlalu baik dalam memprosesnya. Rekomendasinya (lihat misalnya 50 tip dan trik untuk pengembang mongodb dari Kristina Chodorow oleh Oreilly) adalah melakukan apa yang disinggung oleh Andrew dengan singkat di atas:buat kolom huruf pertama dan kembalikan itu sebagai gantinya. Pemrosesan apa pun dapat lebih efisien dilakukan dalam aplikasi.
Tetapi jika Anda merasa bahwa bahkan menanyakan nama lengkap sebelum mengembalikan nama lengkap[0] dari 'tampilan' Anda terlalu berisiko keamanan, Anda tidak perlu melakukan semuanya dengan cara secepat mungkin. Saya telah menghindari pengurangan peta di mongodb untuk sementara waktu karena semua kekhawatiran publik tentang kecepatan. Kemudian saya menjalankan pengurangan peta pertama saya dan memutar-mutar ibu jari saya selama 0,1 detik saat memproses 80.000 10 ribu dokumen. Saya menyadari dalam skema, itu kecil. Tapi itu menggambarkan bahwa hanya karena buruk bagi situs web besar untuk mendapatkan pukulan kinerja pada beberapa pemrosesan sisi server, tidak berarti itu penting bagi Anda. Dalam kasus saya, saya membayangkan saya akan membutuhkan waktu sedikit lebih lama untuk bermigrasi ke Hadoop daripada hanya makan .1 detik itu sesekali. Semoga berhasil dengan situs Anda