sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan kan jeg tjekke for duplikerede dokumenter i Mongoose?

Hvis du ønsker at få en liste over identiske (undtagen _id felt, naturligvis) dokumenter i din samling, her er hvordan du kan gøre det:

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
    }
})

Som altid med aggregeringsrammen kan du forsøge at give mening om, hvad der præcist foregår i hvert trin ved at kommentere alle trin og derefter aktivere alt igen trin for trin.




  1. Er der en måde at begrænse antallet af poster i en bestemt samling

  2. Logstash Web UI starter ikke

  3. Mongodb Aggregation:Sådan returneres kun matchende elementer i en matrix

  4. MongoDB-aggregering med $lookup inkluderer (eller projekterer) kun nogle felter, der skal returneres fra forespørgslen