Как определить, существует ли коллекция в MongoDB с использованием Mongoid? - PullRequest
5 голосов
/ 24 сентября 2010

Поскольку 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

, но существует ли более простой способ определить, существует ли он?

Ответы [ 2 ]

8 голосов
/ 24 сентября 2010

Не уверен, как это сделать через Mongoid, но в целом вы можете запросить коллекцию system.namespaces для {name : "dbname.analyticsCachedResult"}.

1 голос
/ 22 февраля 2013

Используя драйвер 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...