sql >> データベース >  >> NoSQL >> MongoDB

ユーザーフォロワー/フォロワーの最も効率的なクエリに適したMongoDBドキュメント構造は何ですか?

    これは典型的なフォロワーフォローの問題であり、誰も答えはありません。このリンクをチェックしてください:

    フォローとフィードのmongodbデザイン、どこに埋め込む必要がありますか?

    実際、MongoDBとSQLサーバーが唯一の選択肢である場合、この状況はリレーショナルスキーマに非常に適しています。しかし、これはあなたが双方向の関係を持っている特別なタイプの関係問題です。これはおそらくグラフデータベースによってより適切に処理できます:

    http://forum.kohanaframework.org/discussion/10130/followers-and-following-database-design-like-twitter/p1

    重要なのは、二重削除の問題を回避するために、フォロワーまたはフォロワーをユーザードキュメントに保持することはできますが、両方を保持することはできません。したがって、MongoDBに固執する必要がある場合は、1つの方法が考えられます。 頻繁に)、

    自分のプロフィールを表示すると、自分がフォローしているユーザーに興味があるので、フォロワーだけをドキュメントに残します。(それが、最初にフォローした理由です。次に、次のようなクエリを実行します:

    db.Users.find({ user_id : { $in : followees })

    これにより、誰が私をフォローしているのかがわかります(たとえば、私のIDは「user_id」です)。

    他の方法を提案しないもう一つの理由は、それです。最大で30〜40人をフォローできるため、数千人のフォロワーを保存するユーザードキュメントに対して、30〜40人のフォロワーを保存するユーザードキュメントは問題ありません。文書内フォローアプローチを使用すると、全体でほぼ同じサイズのユーザードキュメントを取得できます。ドキュメント内フォロワーアプローチでは、非常に小さいが非常にかさばるドキュメントもいくつかあります。また、(follower_idを除いて)入力するフォロワーデータの量に応じて、可能性があります ドキュメントのサイズ制限に注意したい。



    1. マングースからモデルを削除するにはどうすればよいですか?

    2. MongoDB $ weeklyUpdate#66(2022年4月22日):ハッカソン、mongosh、Github

    3. DjangoでのMongoDB接続のキャッシュ

    4. PythonでMongoDBAtlas認証に失敗しました