2010-09-23 72 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 
相關問題