MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Rails mongoid regex w polu Integer

Rozwiązanie MongoDB z powiązanego pytania to:

db.models.find({ $where: '/^124/.test(this.number)' })

Rzeczy, które przekazujesz do find mapa prawie jeden do jednego na Mongoid:

where(:$where => "/^#{numero.to_i}/.test(this.number)")

to_i wywołanie powinno sprawić, że interpolacja łańcuchów będzie poprawna w tym ograniczonym przypadku.

Należy pamiętać, że jest to dość przerażająca rzecz do zrobienia z bazą danych:nie może ona używać indeksów, skanuje każdy dokument w kolekcji, ...

Lepiej byłoby użyć pola znakowego, aby móc wykonywać normalne dopasowywanie wyrażeń regularnych. Jestem prawie pewien, że MongoDB będzie w stanie użyć indeksu, jeśli zakotwiczysz również swoje wyrażenie regularne na początku. Jeśli naprawdę potrzebujesz, aby była to liczba w bazie danych, możesz zawsze przechowywać ją jako pole typu Integer i String:

field :number,   :type => Integer
field :number_s, :type => String

i mieć kilka haczyków do przechowywania :number_s aktualne jako :number zmiany. Jeśli to zrobisz, twój zakres dopasowania wzorca będzie wyglądał na :number_s . Takie wstępne obliczanie i duplikowanie danych jest dość powszechne w MongoDB, więc nie powinieneś się z tym czuć źle.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Znajdź dokument o podanych wartościach pól w obiekcie z nieznanym kluczem

  2. Nie rozróżniaj wielkości liter w mongodb dla nazw użytkowników w php

  3. MongoDB:cursor.toArray zwraca obietnicę { <oczekujące> }

  4. Klient MongoDB zgłasza wyjątek FileNotFoundException w mscorlib

  5. docker-compose połączenie aplikacji java z mongodb