MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Rel regex mongoid pada bidang Integer

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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara membuat indeks teks di mongodb dengan golang dan perpustakaan mgo?

  2. MongoCursorTimeoutException untuk fungsi agregat

  3. Tidak dapat menginstal mongodb dengan benar di ubuntu 18.04 LTS

  4. Boot2Docker (di Windows) menjalankan Mongo dengan folder bersama (Sistem file ini tidak didukung)

  5. Cara membuat kueri MongoDB yang rumit dengan Powershell