2012-03-01 5 views
0

私は既存のmongoデータベースを読む必要があります。モンゴイドはこれに適していますか?既存のmongoデータベースを読む

私が見つけたすべてのチュートリアルは、最初からmongoデータベースを構築することでした。

私はmongoidを使用してデータベースにアクセスしようとしましたが、既存の情報を表示する運がない、これが私が試みたものです。

mongoid.yml:

development: 
    host: localhost 
    database: managementdb 

test: 
    host: localhost 
    database: managementdb 

私は足場を(mongoidが足場を引き継ぎどのように私は好きではない)でした

モデル:

class GamerProfile 
    include Mongoid::Document 
    store_in :profile 

    field :facebookId, :type => String 
    field :playerName, :type => String 
    field :locale, :type => String 
    field :dateJoined, :type => Time 
end 

しかし、既存の情報でlocalhost:27017/managementdb /プロファイルがビューに表示されていません。

私は読み取り専用アクセスが必要です。 mongomapperやmo​​ngomodelはもっと適していますか?

+0

「モンゴイドはこれに適していますか?」という意味ですか? –

+0

ええそれは私が意味するものです。 –

答えて

2

私はmongoidを試した後にmongomapperを試しました。それは名前が意味する通りです。

レッツは、私がゲーム内でユーザーに関連するが、必ずしもそれから、私は例えばGameUserと呼ばれるモデルでset_collection_name "User"を使用し、そのアプリケーションのためにUserモデルとは関係ありませんMongoDBの中Userと呼ばれるコレクションを持っていると言います。

私のイニシャライザは、mongodbドキュメントからまっすぐ持ち上げられています。その例としてはmongomapperを使用しています。完全GameUserからのデータへ

class GameUser 
    include MongoMapper::Document 

    set_collection_name "User" 
    key :playerName, :type => String 
    ... 
    key :dateJoined, :type => Time 
end 

そして今、私の足場負荷:

MongoMapper.connection = Mongo::Connection.new('localhost', 27017) 
MongoMapper.database = "gamedb" 

そして、私のモデルは、次のようになります。

+0

mongodbのコレクション名と異なる名前を持つモデルがある場合は、 'set_collection_name" foo "' – Antony

0

これは、既存のデータベースに含まれているものと、それに何をしたいのかによって異なります。 Railsに固有ではない生データが含まれている場合は、generic ruby driverを使用してデータベースへの生のクエリを実行できます。

データベースがRailsで作成され、モデルや他のRailsオブジェクトを表現することになっている場合は、それが作成されたobject mapperを使用する必要があります(これは間違いです)。

+0

これは、別の言語で別のフレームワークによって構築された生データですが、まだモデルとコントローラを用意したいので、mongoを使用して破壊操作を行うことはありません(破壊のために残りのAPIを使用する必要があります)。 –

+0

@JosephLeBrechその場合、おそらく、そのフレームワークがデータベースをどのように使用しているのか、データベースの構造は何かを調べることが最善の策です。これは単純な作業ではないかもしれません。次に、必要なデータに到達するように生のクエリを書き込みます(必要に応じていくつかのオブジェクトにデータをマップすることもできます)。 REST APIを使用してデータを取得することはできません。物事をより簡単にすることができます。 – Lycha

+0

私は一度に1つのコレクションにアクセスする必要があります、私はモデルがコレクションに直接マップすると思いました。私はmongomapperと一緒にやってみた。そうでなければ、最初からそれをやらなければならないかもしれない。 –

関連する問題