Řešení MongoDB z propojené otázky by bylo:
db.models.find({ $where: '/^124/.test(this.number)' })
Věci, které můžete find
namapujte skoro jedna ku jedné do Mongoidu:
where(:$where => "/^#{numero.to_i}/.test(this.number)")
to_i
volání by mělo v tomto omezeném případě zajistit v pořádku interpolaci řetězců.
Mějte na paměti, že s vaší databází je to docela strašná věc:nemůže používat indexy, prohledá každý jednotlivý dokument v kolekci, ...
Možná by bylo lepší použít pole řetězce, abyste mohli provádět normální párování regulárních výrazů. Jsem si docela jistý, že MongoDB bude moci používat index, pokud na začátku ukotvíte svůj regulární výraz. Pokud opravdu potřebujete, aby to bylo číslo v databázi, můžete jej vždy uložit jako pole Integer i String:
field :number, :type => Integer
field :number_s, :type => String
a pak mít nějaké háčky pro udržení :number_s
aktuální jako :number
Změny. Pokud byste to udělali, váš rozsah shody vzorů by vypadal na :number_s
. Předpočítávání a duplikování dat, jako je tato, je u MongoDB docela běžné, takže byste se kvůli tomu neměli cítit špatně.