我需要使用Spring Data爲MongoDB中的用戶存儲朋友關係。我的「模式」解決方案是在用戶文檔中存儲朋友的用戶名(也是_id)。我沒有使用DBRef,因爲Spring Data和DBRef在自我關係上似乎存在問題(朋友是用戶:p)。一個簡單的用戶文件是這樣的:mongoDB朋友關係和原子更新
{
"_id" : "user1",
"email" : "[email protected]",
"friendRequests" : {
"user4" : 0
},
"friends" : ["user2", "user3" ],
"password" : "$2a$10$9iJWLZjBSu3rq19wh7KTduNXIVcXozsNVjwVogO9eoz0uXO52Z2NC"
}
我覺得這個模型已經足夠好了。但是,當有人接受好友請求時,我必須更新這兩個用戶的文檔,而且操作不是原子性的。可能會出現一些情況,其中只有一個被更新。這不是關鍵數據,但仍然會很高興爲此提供解決方案。我是否在說這個?我在兩階段提交http://cookbook.mongodb.org/patterns/perform-two-phase-commits/上發現了這個文檔,但是對於這種情況來說似乎太多了,儘管它很容易實現。
感謝您的回答!很難說現在有多少用戶可以擁有。這不是應用程序的核心功能,至少在我的腦海中此刻。我使用這個解決方案,因爲在這裏的其他答案建議在stackoverflow。目前我唯一想到的另一個解決方案是使用另一個集合來存儲友誼 – alex