Выберите, где не ноль или пустой в монгоиде

80

Я изменил модель, чтобы она включала новое поле, например ...

field :url, :type => String

Я использую activeadmin, поэтому, когда я создаю новую запись, @model.urlона пуста, а в записях, созданных до изменения схемы, она равна нулю. Как выбрать оба? Я пытался:

# Returns nils and strings
Model.where(:url.ne => "").count 

# Returns strings and ""
Model.where(:url.ne => nil).count

# Returns strings, nils and ""
Model.where(:url.ne => ["", nil]).count 

Или, если есть лучшая практика для такого сценария, дайте мне знать.

метод действия
источник

Ответы:

85

Пытаться

Model.where(:url.nin => ["", nil]).count

Работает даже когда url = nil

a14m
источник
Я согласен, это настоящий ответ и должен быть принятым ответом на этот вопрос.
Куинн
Если вы просто хотите проверить записи, где поле не равно нулю:Model.where(:field.ne=>nil)
Ekkstein
5

Пытаться:

Model.nin(url: ['', nil])
п. мацинопулос
источник