MongoDB 关于 Mongoid 的中的 empty?

simlegate · 2012年12月12日 · 2853 次阅读

其实 Mongoid 的 empty? 方法和 Ruby 中的 empty?是不一样的,首先给大家看一下 Mongoid 的 empty? 源代码 https://github.com/mongoid/mongoid/blob/master/lib/mongoid/finders.rb

# File 'lib/mongoid/finders.rb', line 51

def empty?
  count == 0
end

# File 'lib/mongoid/finders.rb', line 41
def count
      with_default_scope.count
end
.....

需要大家一步一步找不知道的东西,比如'with_default_scope',开始完全不知道 TA 是个什么东西,在 google 搜了以下 with_default_scope,才知道是 Mongoid 的一个方法,其中你建的 Model 类就有这个方法,打开终端就看得见! 下面就是我今天主要想说的

# 我首先从数据库中读数据(数据库为空)
log = Log,where(content: "123456")
log.length    => 0
log.empty?   => true

现在我在数据库中插入一条数据

Log.create(content: "123456")
log.length    => 0
log.empty?  => false

所以问题就出现了,出现这种情况,个人认为是在调用 empty?时 with_default_scope 起作用了,再次查询了一次数据库! 不知道这样理解正确不?还请指教。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号