När det gäller att injektion är ett problem, som med SQL, är risken betydligt lägre... om än teoretiskt möjlig via en okänd attackvektor.
Datastrukturerna och protokollet är binära och API-drivna snarare än att utnyttja escaped värden inom ett domänspecifikt språk. I grund och botten kan du inte bara lura tolken att lägga till en ";db.dropCollection()" i slutet.
Om det bara används för frågor är det förmodligen bra... men jag vill ändå varna dig för att använda en liten bit av validering:
- Se till att endast alfanumeriska tecken (filtrera eller ogiltigförklara nollor och allt annat som du normalt inte skulle acceptera)
- Tvinga en maxlängd (som 255 tecken) per term
- Tillämpa en maxlängd för hela frågan
- Strip special parameternamn som börjar med "$", som "$where" och liknande
- Tillåt inte kapslade arrayer/dokument/hashar... bara strängar och ints
Tänk också på att en tom fråga returnerar allt. Du kanske vill ha en gräns för det returvärdet. :)