스프링 데이터를 사용하여 MongoDB의 사용자를위한 친구 관계를 저장해야합니다. 내 "스키마"솔루션은 사용자 문서 내에 친구의 사용자 이름 (_id 임)을 저장하는 것입니다. DBRef를 사용하지 않고 있습니다. Spring 데이터와 DBRef에 문제가있는 것 같습니다 (친구는 users : p). 간단한 사용자 문서는 다음과 같습니다.mongoDB 친구 관계 및 원자 적 업데이트
{
"_id" : "user1",
"email" : "[email protected]",
"friendRequests" : {
"user4" : 0
},
"friends" : ["user2", "user3" ],
"password" : "$2a$10$9iJWLZjBSu3rq19wh7KTduNXIVcXozsNVjwVogO9eoz0uXO52Z2NC"
}
이 모델은 충분히 좋다고 생각합니다. 그러나 누군가가 친구 요청을 수락하면 사용자의 문서를 모두 업데이트해야하며 작업은 원 자성이 아닙니다. 이 중 하나만 업데이트되는 경우도있을 수 있습니다. 중요한 데이터는 아니지만이를위한 솔루션을 제공하는 것이 좋습니다. 나는 이것을 overthinking인가? 이 문서는 2 단계 커밋 http://cookbook.mongodb.org/patterns/perform-two-phase-commits/에서 발견되었지만 구현하기가 쉽지만이 상황에서는 너무 많이 보인다.
답변 해 주셔서 감사합니다. 사용자가 얼마나 많은 친구가 될지 지금 말하기는 어렵습니다. 최소한 응용 프로그램의 핵심 기능은 아닙니다. stackoverflow에 대한 다른 답변을 제안했기 때문에이 솔루션을 사용했습니다. 현재 내 마음에 오는 유일한 해결책은 다른 컬렉션을 사용하여 우정을 저장하는 것입니다. – alex