From c298a22257a433a090b18b4042954dd35b36e848 Mon Sep 17 00:00:00 2001 From: Ayden Jahola Date: Sun, 8 Sep 2024 18:57:37 +0100 Subject: [PATCH] add scripts --- scripts/removeDuplicate.js | 45 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 scripts/removeDuplicate.js diff --git a/scripts/removeDuplicate.js b/scripts/removeDuplicate.js new file mode 100644 index 0000000..91c2e17 --- /dev/null +++ b/scripts/removeDuplicate.js @@ -0,0 +1,45 @@ +const mongoose = require("mongoose"); + +require("dotenv").config(); + +const TriviaQuestion = require("../models/TriviaQuestion"); + +// Connect to MongoDB +mongoose + .connect(process.env.MONGODB_URI) + .then(() => console.log("✅ Connected to MongoDB")) + .catch((err) => console.error("❌ Failed to connect to MongoDB", err)); + +async function removeDuplicates() { + try { + // Aggregate duplicates + const duplicates = await TriviaQuestion.aggregate([ + { + $group: { + _id: "$question", // Group by the question text + count: { $sum: 1 }, + ids: { $push: "$_id" }, // Collect ids of the duplicate entries + }, + }, + { + $match: { count: { $gt: 1 } }, // Match groups with more than one document + }, + ]); + + // Remove duplicates + for (const doc of duplicates) { + const idsToRemove = doc.ids.slice(1); // Keep the first entry and remove the rest + await TriviaQuestion.deleteMany({ _id: { $in: idsToRemove } }); + console.log(`Removed duplicates: ${idsToRemove}`); + } + + console.log("Duplicates removed"); + } catch (err) { + console.error("Error removing duplicates:", err); + } finally { + // Close the connection + mongoose.connection.close(); + } +} + +removeDuplicates();