由于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
但有没有更简单的方法来检测它是否存在?
答案 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