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

Collections 如何使用Mongoid判断MongoDB中是否存在集合?,collections,mongodb,mongoid,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'

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

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

不知道如何通过Mongoid来实现,但一般来说,您可以查询system.namespaces集合中的
{name:“dbname.analyticsCachedResult”}

使用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

啊,谢谢你的提示。这行代码也很有用:
Mongoid.master.collections.map{{c{c.name}.include?“analyticsCachedResult'
尽管如果Mongoid有这样一个调用可能会更好。