Възможно е да се направи почти всичко от страната на сървъра с mongodb. Причината, поради която обикновено ще чуете „не“, е, че жертвате твърде много скорост, за да има смисъл при обикновени обстоятелства. Една от основните сили зад PyMongo, Майк Диролф с 10gen, има добра публикация в блог за използването на javascript от страна на сървъра с pymongo тук:http://dirolf.com/2010/04/05/stored-javascript-in-mongodb-and-pymongo.html . Неговият пример е за съхраняване на javascript функция за връщане на сумата от две полета. Но можете лесно да промените, за да върнете първата буква от полето за вашето потребителско име. Същността би била нещо като:
db.system_js.first_letter = "function (x) { return x.charAt(0); }"
Първо обаче разберете, че mongodb е направен да бъде наистина добър в извличането на вашите данни, но не и в обработката им. Препоръката (вижте например 50 съвета и трика за разработчиците на mongodb от Kristina Chodorow от Oreilly) е да направите това, което Андрю кратко намекна да направите по-горе:направете колона с първа буква и върнете това вместо това. Всяка обработка може да се извърши по-ефективно в приложението.
Но ако смятате, че дори запитването за пълното име, преди да върнете fullname[0] от вашия „изглед“, е твърде голям риск за сигурността, не е нужно да правите всичко по възможно най-бързия начин. Избягвах map-reduce в mongodb за известно време поради всички обществени опасения относно скоростта. След това стартирах първото си намаляване на картата и въртях палци за 0,1 секунди, докато обработваше 80 000 10k документа. Осъзнавам, че в схемата на нещата това е малко. Но това илюстрира, че само защото е лошо за масивен уебсайт да понесе удар в производителността при обработка от страна на сървъра, не означава, че това би имало значение за вас. В моя случай си представям, че ще ми отнеме малко повече време да мигрирам към Hadoop, отколкото просто да ям тази 0,1 секунда от време на време. Успех със сайта ви