Solusi MongoDB dari pertanyaan tertaut adalah:
db.models.find({ $where: '/^124/.test(this.number)' })
Hal-hal yang Anda serahkan untuk find
memetakan cukup banyak satu-ke-satu ke Mongoid:
where(:$where => "/^#{numero.to_i}/.test(this.number)")
to_i
panggilan harus membuat interpolasi string oke untuk kasus terbatas ini.
Ingatlah bahwa ini adalah hal yang sangat mengerikan untuk dilakukan pada database Anda:tidak dapat menggunakan indeks, ia akan memindai setiap dokumen dalam koleksi, ...
Anda mungkin lebih baik menggunakan bidang string sehingga Anda dapat melakukan pencocokan regex normal. Saya cukup yakin MongoDB akan dapat menggunakan indeks jika Anda juga mengaitkan regex Anda di awal. Jika Anda benar-benar membutuhkannya sebagai angka di dalam database, maka Anda selalu dapat menyimpannya sebagai bidang Integer dan String:
field :number, :type => Integer
field :number_s, :type => String
dan kemudian memiliki beberapa kait untuk menyimpan :number_s
up to date sebagai :number
perubahan. Jika Anda melakukan ini, cakupan pencocokan pola Anda akan terlihat di :number_s
. Prakomputasi dan duplikasi data seperti ini cukup umum dengan MongoDB sehingga Anda tidak perlu merasa buruk tentang hal itu.