# Решение проблем с подключением к MongoDB

## Проблема: Ошибка аутентификации

```
Command failed with error 13 (Unauthorized): 'Command find requires authentication'
```

## Причина

MongoDB сервер на `92.38.48.166:27017` требует аутентификацию, но в конфигурации не указаны учетные данные.

## Решение

### 1. Обновлена конфигурация MongoDB

В файле `src/main/resources/application.properties` добавлены настройки аутентификации:

```properties
# MongoDB Configuration
spring.data.mongodb.host=92.38.48.166
spring.data.mongodb.port=27017
spring.data.mongodb.database=parser_db
spring.data.mongodb.username=parser_user
spring.data.mongodb.password=parser_password
spring.data.mongodb.authentication-database=admin
```

### 2. Альтернативный способ подключения

Если отдельные параметры не работают, используйте URI подключения:

```properties
# Закомментируйте отдельные параметры и раскомментируйте URI
# spring.data.mongodb.host=92.38.48.166
# spring.data.mongodb.port=27017
# spring.data.mongodb.database=parser_db
# spring.data.mongodb.username=parser_user
# spring.data.mongodb.password=parser_password
# spring.data.mongodb.authentication-database=admin

# Используйте URI подключения
spring.data.mongodb.uri=mongodb://parser_user:parser_password@92.38.48.166:27017/parser_db?authSource=admin
```

### 3. Проверка подключения

#### Через API:

```bash
curl http://localhost:8080/api/parser/health/mongodb
```

#### Через MongoDB клиент:

```bash
mongo mongodb://parser_user:parser_password@92.38.48.166:27017/parser_db?authSource=admin
```

### 4. Возможные проблемы и решения

#### Проблема: Неверные учетные данные

**Решение:** Проверьте правильность username/password с администратором MongoDB

#### Проблема: Пользователь не существует

**Решение:** Создайте пользователя в MongoDB:

```javascript
use admin
db.createUser({
  user: "parser_user",
  pwd: "parser_password",
  roles: [
    { role: "readWrite", db: "parser_db" }
  ]
})
```

#### Проблема: Пользователь не имеет прав

**Решение:** Предоставьте права на базу данных:

```javascript
use parser_db
db.grantRolesToUser("parser_user", ["readWrite"])
```

#### Проблема: Firewall блокирует подключение

**Решение:** Убедитесь, что порт 27017 открыт на сервере MongoDB

### 5. Улучшения в коде

#### Улучшенная обработка ошибок

- Добавлена специфическая обработка ошибок аутентификации
- Более информативные сообщения об ошибках
- Graceful handling ошибок подключения

#### Новый endpoint для диагностики

- `GET /api/parser/health/mongodb` - проверка подключения к MongoDB
- Возвращает статус подключения и количество записей
- Предоставляет рекомендации при ошибках

### 6. Тестирование

1. **Запустите приложение:**

   ```bash
   ./mvnw spring-boot:run
   ```

2. **Проверьте подключение к MongoDB:**

   ```bash
   curl http://localhost:8080/api/parser/health/mongodb
   ```

3. **Если подключение успешно, запустите парсинг:**
   ```bash
   curl -X POST http://localhost:8080/api/parser/parse/all
   ```

### 7. Логирование

Уровень логирования MongoDB настроен для диагностики:

```properties
logging.level.org.springframework.data.mongodb=INFO
logging.level.com.mongodb=WARN
```

### 8. Контакты

Если проблема не решается, обратитесь к администратору MongoDB сервера для:

- Проверки учетных данных
- Настройки прав доступа
- Проверки конфигурации сервера
