Se você pretende usar $gt com strings, terá que usar regex, o que não é ótimo em termos de desempenho. É mais fácil apenas criar um novo campo que contenha o valor numérico do preço ou alterar este tipo de campo para int/double. Uma versão javascript também deve funcionar, assim:
db.products.find("this.price > 30.00")
como js irá convertê-lo em número antes de usar. No entanto, os índices não funcionarão nessa consulta.