选择 mongoid 中不为空或为空的位置

Posted

技术标签:

【中文标题】选择 mongoid 中不为空或为空的位置【英文标题】:Select where not null or empty in mongoid 【发布时间】:2012-05-07 10:43:48 【问题描述】:

我修改了一个模型,使其包含一个新字段,例如...

field :url, :type => String

我使用 activeadmin,所以当我创建一个新条目时,@model.url 是空的,而在更改架构之前创建的条目中它是 nil。如何选择两者?我试过了:

# 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 

或者,如果有适合这种情况的最佳做法,请告诉我。

【问题讨论】:

【参考方案1】:

试试:

Model.nin(url: ['', nil])

【讨论】:

【参考方案2】:

试试

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

即使url = nil 也能正常工作

【讨论】:

我同意,这是真正的答案,应该是这个问题的公认答案。 如果您只想检查字段不为零的条目:Model.where(:field.ne=>nil)【参考方案3】:

试试

Model.where(:url.ne => "", :url.exists => true).count

见Mongoid Symbol Operators

【讨论】:

以上是关于选择 mongoid 中不为空或为空的位置的主要内容,如果未能解决你的问题,请参考以下文章

检查所有三列是不是不为空或为空

如果它为空或为空,如何从序列化中忽略可为空的属性?

检查字符串是不是为空或为空的最简单方法

如何检查数据读取器是不是为空或为空

选择字段不存在、为空或为假的 MongoDB 文档?

在查询SQL语句中为空或不为空怎么写