[Обновление] С установленным MongoMapper вы можете легко использовать соединение mongodb напрямую
mongodb = MongoMapper.database
collection = mongodb.collection("my_collection")
collection.find.first
=> {"_id"=>BSON::ObjectId('4e43dfc75d1e1e0001000001'), "key1"=>"val1" }
этот другой SO Q / A является еще более прямым, используя функции javascript, такие как MongoMapper.database.eval (Mongo :: Code.new ('function () {return 11 + 6;})
[/ update]
У меня такая архитектура полиглота, некоторые модели с postgresql, другие как документы mongo. Я не совсем уверен, о чем вы спрашиваете, поэтому я прыгну прямо и выложу большую часть своей конфигурации здесь. Она включает в себя мои хаки, вывероятно, найти более красивый конфиг в другом месте.
Я поместил настройку в суть https://gist.github.com/957341
ОК, так что вот документ со встроенным документом, а затем спецификации. Я написал спецификации один за другимтак что они вроде как тестовые.
class MyDocument
include MongoMapper::Document
key :title, String
key :published_at, Time, :index => true
key :collaborators, Array
many :my_embedded_documents
end
class MyEmbeddedDocument
include MongoMapper::EmbeddedDocument
key :title, String
key :author, String
embedded_in :my_document
end
spec
require "spec_helper"
describe MyDocument do
before do
@md = MyDocument.create(:title => "Example", :collaborators => ["mongomapper", "rspec", "oma"] )
end
it "should have title" do
found = MyDocument.find(@md.id)
found.title.should == "Example"
end
it "should have two my_documents" do
MyDocument.create
MyDocument.count.should == 2
end
it "should be able to fetch embedded documents" do
@md.my_embedded_documents << MyEmbeddedDocument.new(:title => "The King", :name => "Elvis Presley")
@md.my_embedded_documents.build(:title => "Embedded example", :name => "Embeddo")
@md.save!
MyDocument.where(:title => "Example").first.should == @md #findMyEmbeddedDocument.count.should == 2
end
end
spec_helper.rb
RSpec.configure do |config|
#...
config.after(:each) do
MongoMapper.database.collections.each(&:remove)
end
end
Я не знаю, что вы хотелиответы, но я надеюсь, что это кому-нибудь поможет.