Как получить прямой доступ к API MongoDB из Mongoid?

Я хотел бы использовать метод addToSet MongoDB, но Mongoid в настоящее время еще не поддерживает это. Есть ли способ прямого доступа к драйверу MongoDB из моей модели Rails?


person picardo    schedule 24.01.2011    source источник


Ответы (3)


Я задал этот вопрос в группе монгоидов, и это был лучший ответ:

Предполагая, что ваш объект модели является Mongoid::Document, просто вызовите для него метод «db», чтобы получить дескриптор объекта Mongo::DB, который Mongoid использует под капотом.

http://www.google.com/url?sa=D&q=http://rdoc.info/github/mongoid/mongoid/master/Mongoid/Collections/ClassMethods%23db-instance_method

Оттуда вы можете напрямую использовать API драйвера MongoDB Ruby.

http://api.mongodb.org/ruby/current/file.TUTORIAL.html#

Кроме того, вы можете получить доступ к коллекции записей, используя ModelName.collection.

person picardo    schedule 24.01.2011
comment
похоже, что метод db отсутствует, а метод collection включен! - person Peter Ehrlich; 26.04.2013

Вы можете использовать гем mongo-ruby-driver из mongodb:

https://github.com/mongodb/mongo-ruby-driver

Проверьте метод обновления в API:

http://api.mongodb.org/ruby/1.2.0/Mongo/Collection.html#update-instance_method

И этот параметр может быть тем, что вы ищете для использования addToSet:

(Boolean) :upsert — default: +false+ — if true, performs an upsert (update or insert)
person Alex    schedule 24.01.2011

До Mongoid 2.4 включительно вы могли получить доступ к объекту базы данных с помощью

db = Mongoid.master
person Edward Huynh    schedule 14.06.2012
comment
Это не работает с 3+. MyModel.collection.database, однако, - person Peter Ehrlich; 26.04.2013