0

Mongoを使用して単語頻度データを保存しようとしています。個人が各単語を使用する頻度を計算できるように、各単語をユーザーに関連付ける必要があります。現在、私の単語コレクションは次のようになっています。

{'Hello':3, 'user_id':1}

これは明らかに「1対1」ベースでのみ機能し、良くありません。

私は、これをユーザーと単語の間の「1対多」の関係ショップにするための最善の方法を模索しています。次のように、ユーザーの関係を単語コレクションに保存しますか?

{'word':"Hello", 'users':[{'id':1, 'count':4},{'id':2, 'count':10}]}

または、代わりに単語数をユーザーコレクションに添付しますか?

{'id':1, 'username':'SomeUser', 'words':[{'Hello':4}]}

2番目のアプローチの明らかな欠点は、同じ単語が異なるユーザー間で使用されることです。したがって、単一の単語を収集すると、データサイズを抑えるのに役立ちます。

誰かが私がここで何をすべきかについて私にアドバイスできますか?ドキュメントで見落としている可能性のある方法はありますか?

4

1 に答える 1

1

2 番目のアプローチの明らかな欠点は、同じ単語が異なるユーザー間で使用されることです。そのため、単一の単語コレクションを使用すると、データ サイズを抑えるのに役立ちます。

いいえ、それがドキュメント データベースを使用する性質です。非SQLソリューションでは、データサイズは実際には問題ではありません。重要なことは、データにどれだけ簡単かつ迅速にアクセスできるかです。

最初のアプローチは、典型的な教科書のリレーショナル モデルです。これをmongoで使用する利点はありません(mongoでリレーショナルな方法でこれをモデル化できますが)。代わりに、2番目のアプローチはあなたに与えます

  • すべての単語がユーザー内に保存されるため、Fatser は読み取り/書き込みを行います。このために複数のクエリを実行する必要はありません
于 2011-10-24T15:26:05.317 に答える