sql >> Databasteknik >  >> NoSQL >> MongoDB

Transformera MongoDB-data vid sökning

Det är möjligt att göra nästan vad som helst på serversidan med mongodb. Anledningen till att du vanligtvis kommer att höra "nej" är att du offrar för mycket hastighet för att det ska vara vettigt under vanliga omständigheter. En av huvudkrafterna bakom PyMongo, Mike Dirolf med 10gen, har ett bra blogginlägg om att använda server-side-javascript med pymongo här:http://dirolf.com/2010/04/05/stored-javascript-in-mongodb-and-pymongo.html . Hans exempel är att lagra en javascript-funktion för att returnera summan av två fält. Men du kan enkelt ändra för att returnera den första bokstaven i ditt användarnamnsfält. Kontentan skulle vara något i stil med:

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

Förstå dock först att mongodb är gjord för att vara riktigt bra på att hämta din data, inte riktigt bra på att bearbeta den. Rekommendationen (se till exempel 50 tips och tricks för mongodb-utvecklare från Kristina Chodorow av Oreilly) är att göra vad Andrew kortfattat anspelade på att göra ovan:göra en första bokstavskolumn och returnera den istället. All bearbetning kan göras mer effektivt i applikationen.

Men om du känner att ens fråga efter det fullständiga namnet innan du returnerar fullständigt namn[0] från din "vy" är en för stor säkerhetsrisk, behöver du inte göra allt på snabbast möjliga sätt. Jag hade undvikit map-reduce i mongodb ett tag på grund av all allmänhetens oro över hastighet. Sedan körde jag min första kartförminskning och vred på tummarna i 0,1 sekunder när den bearbetade 80 000 10 000 dokument. Jag inser att det är litet. Men det illustrerar att bara för att det är dåligt för en stor webbplats att ta en prestandaträff på någon serversidas bearbetning, betyder det inte att det skulle spela någon roll för dig. I mitt fall föreställer jag mig att det skulle ta mig lite längre tid att migrera till Hadoop än att bara äta den där 0,1 sekunden då och då. Lycka till med din webbplats



  1. dropDups sant fungerar inte mongodb

  2. PHP:Är det dålig design att serialisera objekt och fästa dem i databasen för senare?

  3. Returnera endast specifika fält från underdokument för projektionsmatris

  4. Mongoose-frågor om datumtillstånd har inga resultat, MongoDB-skalet fungerar