5

由于Mongoid.master.collection()即使集合不存在也会返回一个集合,我们可以使用

coll = Mongoid.master.collection('analyticsCachedResult')
if coll.count == 0
  # [...]
end

测试它是否是一个空集合。另一种方法是循环

Mongoid.master.collections.each do |c|
  return c if c.name == 'analyticsCachedResult'
end
return nil

但是有没有更简单的方法来检测它是否存在?

4

2 回答 2

8

不知道如何通过 Mongoid 做到这一点,但通常您可以查询system.namespaces集合中的{name : "dbname.analyticsCachedResult"}.

于 2010-09-23T22:20:27.157 回答
1

使用 mongo ruby​​ 驱动程序,我扩展了 DB 类:

class Mongo::DB
  def collection_exists?(collection_name)
    x = "#{self.name}.#{collection_name}" # e.g., "redbike_db.clients"
    nil != self['system.namespaces'].find_one({'name' => x})
  end
end
于 2013-02-22T19:49:08.210 回答