如何使用Mongoid判断MongoDB中是否存在集合?

时间:2010-09-23 21:58:32

标签: collections mongodb mongoid

由于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

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

2 个答案:

答案 0 :(得分:8)

不确定如何通过Mongoid执行此操作,但通常您可以查询{name : "dbname.analyticsCachedResult"} system.namespaces 集合。

答案 1 :(得分: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