나는 Voting with Atomic Operators 글을 읽었습니다. 이 기사에서 voters
필드는 ObjectId
의 배열입니다. 그러나 나는 다음과 같은 형식으로 포함 된 문서의 배열로 voters
를 저장하고 싶습니다 :MongoDB - "원자 연산자로 투표"에 대한 임베드 버전
{
user: ObjectId,
date: Date,
isDownvote: Boolean, // If false, it's an upvote.
}
사용자가 찬성 투표하거나 스택 오버플로가 제공하는 투표 시스템과 같은 게시물을 downvote 수 있습니다. 사용자가 게시물을 찬성 투표 할 때, 예를 들어, 경우 고려해야 할이 있습니다 : 사용자에 의한 downvote이 이미 존재
- 경우, 투표의
isDownvote
false
에 업데이트됩니다. isDownvote
이 (가)false
인 새 투표를 밀어 넣으십시오.
이 투표 형식으로 단일 쿼리에서 투표를 푸시/풀링하려면 어떻게해야합니까?
고마워. 이것은 답이되어야합니다. [원자 연산자를 사용하여 투표] (http://cookbook.mongodb.org/patterns/votes/) 문서의 쿼리도 카운터를 업데이트하지만이 경우 단일 쿼리에서이를 수행 할 방법이 없다고 생각합니다. –
@TrantorLiu 흠, 아무도이 경우에도 두 개의 쿼리를 필요로하지 않습니다. – Sammaye