Jag är säker på att jag har angett listan ett par gånger trots att Googles sökresultat endast är fyllt med personer som berättar hur du gör:
- Det är
eval
eval
har naturliga förmågor för att enkelt injiceras, det är som en icke-PDO-ekvivalent till SQL, om du inte bygger ett fullskaligt flyktbibliotek runt det kommer det att förstöra dig. Genom att använda dessa funktioner ersätter du i praktiken det säkrare modersmålet i MongoDB mot något som är lika osäkert som vilken gammal SQL som helst där ute.- Den kräver ett globalt lås och kan ta skrivlås och släpps inte förrän operationen är helt klar, till skillnad från andra operationer som kommer att släppa i vissa fall.
eval
Fungerar bara på Primaries och aldrig någon annan medlem av replikuppsättningen- Det körs i princip, okontrollerat, ett ton JS i en medföljande V8/spidermonkey-envo som levereras med MongoDB med full förmåga att röra vilken del av din databas och administratörskommandon, låter det säkert?
- Det är INTE MongoDB och det är inte heller "MongoDBs SQL", det körs inom en inbyggd JS-miljö, inte MongoDBs C++-kod i sig (till skillnad från aggregeringsramverket).
- På grund av föregående punkt är det EXTREMT långsamt i jämförelse med många andra alternativ, detta gäller för
$where
användning också.
Det borde vara tillräckligt för att du ska komma igång på den här fronten.