mirror of
https://github.com/aydenjahola/discord-multipurpose-bot.git
synced 2024-11-24 17:55:56 +00:00
46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
|
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();
|