2010-09-23 117 views
5

由于Mongoid.master.collection()返回一个集合,即使集合不存在,我们可以使用如何判断一个集合是否存在于使用Mongoid的MongoDB中?

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 

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

回答

8

不知道如何通过Mongoid做到这一点,但一般来说,你可以查询system.namespaces collection {name : "dbname.analyticsCachedResult"}

+1

啊,谢谢你的提示。这条线也可以工作:''Mongoid.master.collections.map {| c | c.name} .INCLUDE? 'analyticsCachedResult',尽管如果Mongoid有这样的呼叫,它可能会更好。 – 2010-09-23 22:45:25

1

使用蒙戈红宝石司机,我延长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 
相关问题