sql >> Database >  >> NoSQL >> MongoDB

Hoe kan ik controleren op dubbele documenten in Mongoose?

Als u een lijst wilt met identieke (behalve de _id veld, uiteraard) documenten in uw verzameling, hier is hoe u dat kunt doen:

collection.aggregate({
    $project: {
        "_id": 1, // keep the _id field where it is anyway
        "doc": "$$ROOT" // store the entire document in the "doc" field
    }
}, {
    $project: {
        "doc._id": 0 // remove the _id from the stored document because we do not want to compare it
    }
}, {
    $group: {
        "_id": "$doc", // group by the entire document's contents as in "compare the whole document"
        "ids": { $push: "$_id" }, // create an array of all IDs that form this group
        "count": { $sum: 1 } // count the number of documents in this group
    }
}, {
    $match: {
        "count": { $gt: 1 } // only show what's duplicated
    }
})

Zoals altijd met het aggregatieraamwerk, kun je proberen te begrijpen wat er precies aan de hand is in elke stap door alle stappen te becommentariëren en vervolgens alles stap voor stap opnieuw te activeren.




  1. Object #<MongoClient> heeft geen methode 'open'

  2. Hoe stel ik _id in op db-document in Mongoose?

  3. Redis als unieke atomaire id-generator - Thread veilige manier voor web-app om race-omstandigheden te voorkomen

  4. Vind dubbele URL's in mongodb