sql >> データベース >  >> NoSQL >> MongoDB

投票のためのMongoデータモデリング/更新(上下)

    2番目のスキーマを使用する方がはるかに簡単なようです。

    Document:  { name: "name",
                 upvoters: [name1, name2, etc],
                 downvoters: [name1, name2, etc],
               }
    

    総投票数を取得するには、ドキュメントとusedoc.upvoters.length-doc.downvoters.lengthを取得できます(各ドキュメントを賛成票と反対票の配列が[])で開始します

    アイテム「c」のユーザー「x」による賛成票を記録するには、次のようにします。

    db.votes.update({name:"c"},{$addToSet:{upvotes:"x"},$pull:{downvotes:"x"}})
    

    これはアトミックであり、10回実行しても同じことを実行できるという利点があります。また、「x」がすでに「c」に投票したかどうか、およびその方法を確認する必要がありません。

    反対票を記録するには、それを逆にします:

    db.votes.update({name:"c"},{$addToSet:{downvotes:"x"},$pull:{upvotes:"x"}})
    


    1. Laravel5.5を使用したPredisAggregate/RedisCluster.php:337のプールで利用可能な接続がありません

    2. Reactでは、mongoからページに2つのリストを呼び出し、1つをクリックして、他に表示されているものをフィルタリングしたいと思います。

    3. ObjectIDまたはuid(自分で実装)を使用してユーザーを識別する必要がありますか?

    4. MongoDBスライスクエリをgolangに