問題タブ [mongoid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - チャット アプリの MongoDB スキーマに関するアドバイスが必要です。埋め込みドキュメントと関連ドキュメント
MongoDB/NoSQL スキーマを学ぶ機会として、MongoDB プロジェクトを開始しています。これはライブ チャット アプリで、スタックには Rails 3、Ruby 1.9.2、Devise、Mongoid/MongoDB、CarrierWave、Redis、JQuery が含まれます。
ライブ チャットのポーリングとメッセージのキューイングを別々に処理します。Node.js、APE、またはカスタム EventMachine アプリのいずれかです。しかし、Mongo に関しては、アプリ内の他のすべて、特にチャット ログと履歴トランスクリプトに使用することを考えています。
私の質問は、私の以前の経験はすべて MySQL とリレーショナル DB スキーマであったため、どのようにスキーマを設計するのが最善かということです。サブ質問として、埋め込みドキュメントと関連ドキュメントのどちらが最適かという質問があります。
アプリには次のものがあります。
- 複数の部屋を持つ複数のアカウント
- 複数の部屋
- 部屋ごとに複数のユーザー
- ユーザーが入ることを許可されているルームのリスト
- ルームごとに複数のユーザー チャット
- 部屋ごと、ユーザーごとに検索可能なチャットログ
- 特定のチャットのオプションの添付ファイル
Mongo (少なくとも最後に確認したとき) には 4MB のドキュメント制限があるため、ルームのコレクションを作成し、すべてのルーム チャットを埋め込みドキュメントとして保存することはうまくいかないと思います。
これまで考えてきたことから、次のようなことを考えています。
- アカウントのコレクション
- 部屋のコレクション
- 各部屋はアカウントに関連付けられています
- ルーム内のすべてのチャット メッセージのチャット コレクション内の関連ドキュメント
- 現在ルームにいるすべてのユーザーを一覧表示する埋め込みドキュメント
- ユーザーのためのコレクション
- ユーザーが現在いるすべてのルームを一覧表示する埋め込みドキュメント
- ユーザーが入ることを許可されているすべての部屋を一覧表示する埋め込みドキュメント
- チャットのコレクション
- 各チャットはルーム コレクション内のルームに関連付けられます
- 各チャットはユーザー コレクション内のユーザーに関連付けられます
- オプションのアップロードされた添付ファイルに関する情報を含む埋め込みドキュメント。
私の主な関心事は、これが最終的にリレーショナル スキーマのように見えて目的を破るまで、どこまで行くかということです。埋め込みよりも関連性が高いことは間違いありません。
もう 1 つの懸念事項は、関連ドキュメントの参照は、私が聞いた埋め込みドキュメントへのアクセスよりもはるかに遅いということです。
次のような一般的なクエリを作成したい:
- アカウントのすべての部屋をくれ
- ルーム内のすべてのチャットを教えてください (または日付範囲でフィルター処理)
- 特定のユーザーからのすべてのチャットを受け取る
- 特定の会議室または特定の組織にアップロードされたすべてのファイルを提供する
- 等
スケールする方法でスキーマを効率的に構造化する方法について何か提案はありますか? みんな、ありがとう。
ruby-on-rails - Rails3およびdry_crudでMongoidを使用する場合のcolumn_namesの置き換え
Rails 3とMongoidでスパイクを実行していて、Grailsでの自動足場の楽しい思い出とともに、次の場所を見つけたときにRubyのDRYビューを探し始めました:http: //github.com/codez/dry_crud
簡単なクラスを作成しました
ただし、dry_crudはself.column_namesに依存し、上記のクラスはActiveRecord :: Baseを継承しないため、上記のようなcolumn_namesの独自の実装を作成する必要があります。ハードコードされたリストの代わりに、上記のすべてのフィールドを返すデフォルトの実装を作成できるかどうか知りたいですか?
ruby-on-rails - なぜ Ruby on Rails の Enumerable は 3 のカウントを示しているのに、".each" は項目を 1 回しか出力しないのか
Mongoid (MongoDB オブジェクト マッパー) から返された Enumerable オブジェクトがあります。
HAML の使用:
カウントは 3 を示します クラスは Enumerable::Enumerator を示します しかし、1 つの項目だけが出力されます
オブジェクトは、を使用してコントローラーに返されます
私が変われば
に
次に、3 つすべてを出力しますが、Enumerable メソッドが失敗するのはなぜですか? Railsコンソールで試してみると、p e
実際には3つのアイテムが出力されます。
many-to-many - モンゴイドの一意性検証多対多関係
私は次の協会を持っています
employee_id
今、単一の従業員の一意性を確認するにはどうすればよいですかcompany
ruby-on-rails-3 - Rails 3 でポリモーフィックなネストされたリソースを管理するためのヒントはありますか?
config/routes.rb:
コメントできる内容をもっと増やしていきたいです。
私は現在mongoidを使用しています(mongomapperはまだRails 3と互換性がありません)。コメントは埋め込みリソースです(mongoidはまだポリモーフィックリレーショナルリソースを処理できません)。つまり、親リソースが必要ですコメントを見つけるためです。
次の問題のいくつかを処理するエレガントな方法はありますか?
私のコントローラーでは、コメントを見つける前に親を見つける必要があります。
コメント可能なものをさらに追加し始めると、面倒になります。
またurl_for([comment.parent, comment])
、機能しないため、モデルで何かを定義する必要がありますが、モデルでインデックスルートを定義する必要があるだけでなく、編集および新しいルート定義Comment
を定義する必要があると思います.Comment
先に進むにつれて、対処しなければならない問題が増える可能性があります。
私がこの問題を解決しようとした最初の人だとは想像できません。これをより管理しやすくするための解決策はありますか?
ruby-on-rails - モンゴイドで「社会的」側面を実装するにはどうすればよいですか
作成中のサイトで友達ネットワークを作ろうとしています。私はモンゴイドを使用しています。友達をインスタンス化するにはどうすればよいですか?
私は、ユーザーが他の複数のユーザーと関係を持つ必要があると想定しています。しかし、次のコード:
無効なクエリがあることを教えてくれます。私は何を間違っていますか?私が探しているものを取得する方法について何か提案はありますか?
ruby-on-rails - Mongoid を使用して、単一の項目を変更すると、大量のデータが取り出され、大量のデータが保存されるでしょうか?
Mongoid を使用したものがあるとします。
したがって、2、3 年後には、700 または 1000 の日付がハッシュにマッピングされることになります。1 つの数値を変更する場合、ビッグ オブジェクト全体をメモリに読み込み、変更を加え、ビッグ オブジェクトをディスクに書き戻す必要がありますか? それとも、Mongoid はその特定の場所に行ってその 1 つの番号を変更する方法を知っていますか?
1 つの数値を読み取るためのものであれば、RAM 内の構造全体を読み取る必要はないのではないでしょうか?
ruby-on-rails - MongoDBで巨大な「ドキュメント」を使うのは良くない?
好きなようにMongoDBを構築できるので、このようにすることができます
そのため、毎日データを追加すると、products
ドキュメントとbrands
ドキュメントはどんどん大きくなります。3 年後には と に 1000 個の要素が存在products
しbrands
ます。MongoDB には適していませんか? さらに 4 つのドキュメントに分割する必要があります。
では、3 年後には 2000 の「ドキュメント」しかないということですか?
ruby-on-rails - mongoid に埋め込まれたドキュメントを削除する
名前フィールドだけを持つプロジェクト モデルがあり、そこには line_items へのリレーションも埋め込まれています。クラス プロジェクト インクルード mongoid::document フィールド :name embeddeds_many :line_items end
これはmongoドライバーの質問だと思います:もし私がそのような文書を持っていたら
- 1) mongo コンソールで ID 601 の項目を更新するにはどうすればよいですか?
- 2) どうすれば削除できますか?
ありがとう!
mongodb - 埋め込まれたドキュメントをmongoでページングする方法
投稿コレクションがあり、投稿に埋め込まれているのはコメントの配列だとします。
投稿11〜20のみを引き出すというクエリを作成するにはどうすればよいですか?モンゴイドソリューションが望ましいですが、モンゴクエリオブジェクトも問題ありません