Spring Data を使用して、ユーザーの友人関係を MongoDB に保存する必要があります。私の「スキーマ」ソリューションは、ユーザー ドキュメント内に友人のユーザー名 (_id でもあります) を格納することです。Spring Data と DBRef の自己関係に問題があるように見えるため、DBRef を使用していません (友達はユーザーです:p)。シンプルなユーザー ドキュメントは次のようなものです。
{
"_id" : "user1",
"email" : "user1@test.com",
"friendRequests" : {
"user4" : 0
},
"friends" : ["user2", "user3" ],
"password" : "$2a$10$9iJWLZjBSu3rq19wh7KTduNXIVcXozsNVjwVogO9eoz0uXO52Z2NC"
}
このモデルで十分だと思います。しかし、誰かが友達リクエストを受け入れると、両方のユーザーのドキュメントを更新する必要があり、操作はアトミックではありません。2 つのうちの 1 つだけが更新される場合があります。重要なデータではありませんが、これに対する解決策があればなお良いでしょう。私はこれを考えすぎていますか?2 フェーズ コミットhttp://cookbook.mongodb.org/patterns/perform-two-phase-commits/でこのドキュメントを見つけましたが、実装は非常に簡単ですが、この状況には多すぎるようです。