【问题标题】:How to tell whether a collection exists in MongoDB using Mongoid?如何使用 Mongoid 判断 MongoDB 中是否存在集合?
【发布时间】:2011-04-16 12:27:41
【问题描述】:

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

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

【问题讨论】:

    标签: collections mongodb mongoid


    【解决方案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
    

    【讨论】:

      【解决方案2】:

      不确定如何通过 Mongoid 进行,但一般情况下,您可以在 system.namespaces 集合中查询 {name : "dbname.analyticsCachedResult"}

      【讨论】:

      • 啊,谢谢你的提示。这条线也有效:Mongoid.master.collections.map {|c| c.name}.include? 'analyticsCachedResult' 虽然如果 Mongoid 有这样的电话可能会更好。
      猜你喜欢
      • 1970-01-01
      • 2011-06-01
      • 2013-08-19
      • 2013-05-12
      • 2021-07-26
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多