sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB - Uppröstning/nedröstning av kommentarer med aggregationspipeline

du kan göra det med följande pipeline-uppdatering men det kräver att upp- och nedröstningsarrayerna finns. även om det bara är tomt.

var comment_id = ObjectId("5e5983102328a83d1a4b541f");
var user_id = ObjectId("5e5983102328a83d1a4b53e5");

db.commentReputation.update(
    {
        commentId: comment_id
    },
    [
        {
            $set: {
                upvotes: {
                    $cond: [
                        { $in: [user_id, '$upvotes'] },
                        { $setDifference: ['$upvotes', [user_id]] },
                        { $setUnion: ['$upvotes', [user_id]] }
                    ]
                }
            }
        },
        {
            $set: {
                downvotes: {
                    $cond: [
                        { $in: [user_id, '$downvotes'] },
                        { $setDifference: ['$downvotes', [user_id]] },
                        '$downvotes'
                    ]
                }
            }
        }
    ]
);



  1. Snabbt sätt att hitta dubbletter på indexerad kolumn i mongodb

  2. Vad skulle vara MongoDB C#-drivrutinens motsvarighet till följande fråga med arrayuppdateringsoperatorn $[<identifier>]

  3. Hur extraherar jag det skapade datumet från ett Mongo ObjectID

  4. Spara en mycket stor CSV till mongoDB med mongoose