// Команды для проверки и исправления реферальных кодов // Выполняйте в mongosh // ============================================ // 1. ПРОВЕРИТЬ ПОЛЬЗОВАТЕЛЕЙ БЕЗ REFERRALCODE // ============================================ print("Пользователи без referralCode:\n"); db.users.find({ referralCode: { $exists: false } }, { username: 1, telegramId: 1, createdAt: 1 }).forEach(function(user) { print(" - " + (user.username || user._id) + " (telegramId: " + user.telegramId + ")"); }); // ============================================ // 2. ПОСЧИТАТЬ СКОЛЬКО БЕЗ REFERRALCODE // ============================================ // db.users.countDocuments({ referralCode: { $exists: false } }) // ============================================ // 3. ПОСМОТРЕТЬ ПРИМЕРЫ REFERRALCODE // ============================================ print("\nПримеры referralCode в базе:\n"); db.users.find({ referralCode: { $exists: true } }, { username: 1, referralCode: 1 }).limit(10).forEach(function(user) { print(" " + (user.username || user._id) + ": " + user.referralCode); }); // ============================================ // 4. НАЙТИ ПОЛЬЗОВАТЕЛЕЙ С REFERREDBY БЕЗ REFERRALCODE // ============================================ print("\nПользователи с referredBy, но без referralCode:\n"); db.users.find({ referredBy: { $exists: true, $ne: null }, referralCode: { $exists: false } }).forEach(function(user) { print(" - " + (user.username || user._id) + " -> referredBy: " + user.referredBy); }); // ============================================ // 5. СГЕНЕРИРОВАТЬ REFERRALCODE ДЛЯ ВСЕХ БЕЗ НЕГО // ============================================ db.users.find({ referralCode: { $exists: false } }).forEach(function(user) { // Генерируем код по той же логике, что в модели var code = "REF_" + user.telegramId.slice(-8) + Math.random().toString(36).substring(2, 6).toUpperCase(); // Проверяем уникальность var exists = db.users.findOne({ referralCode: code }); var attempts = 0; while (exists && attempts < 10) { code = "REF_" + user.telegramId.slice(-8) + Math.random().toString(36).substring(2, 6).toUpperCase(); exists = db.users.findOne({ referralCode: code }); attempts++; } if (!exists) { db.users.updateOne( { _id: user._id }, { $set: { referralCode: code } } ); print("✅ Сгенерирован код для " + (user.username || user._id) + ": " + code); } else { print("⚠️ Не удалось сгенерировать уникальный код для " + (user.username || user._id)); } }); print("\n✅ Готово!");