アトミック オペレーターによる投票の記事を読みました。この記事では、voters
フィールドは の配列ですObjectId
。voters
しかし、次の形式の埋め込みドキュメントの配列として保存したいと思います。
{
user: ObjectId,
date: Date,
isDownvote: Boolean, // If false, it's an upvote.
}
ユーザーは、Stack Overflow が提供する投票システムと同じように、投稿に賛成票または反対票を投じることができます。たとえば、ユーザーが投稿に賛成票を投じたい場合、次のようなケースを考慮する必要があります。
- ユーザーによる反対票がすでに存在する場合は、投票を に更新
isDownvote
しfalse
ます。 isDownvote
それ以外の場合は、新しい投票をbeing でプッシュしfalse
ます。
この形式の投票を使用して、単一のクエリで投票をプッシュ/プルするにはどうすればよいですか?