MongoDB 关于 Mongoid 的中的 empty?

simlegate · December 12, 2012 · 2840 hits

其实 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 起作用了,再次查询了一次数据库! 不知道这样理解正确不?还请指教。

No Reply at the moment.
You need to Sign in before reply, if you don't have an account, please Sign up first.