Для создания коллекции документов для базы данных MongoDB на Java, вы можете использовать библиотеку MongoDB Java Driver. Ниже приведен пример кода, который создает коллекцию из 8 документов с рандомными значениями для указанных полей.
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import org.bson.types.ObjectId;
import java.time.LocalDate;
import java.util.Map;
import java.util.Random;
public class MongoDBExample {
public static void main(String[] args) {
// Подключение к MongoDB
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
MongoDatabase database = mongoClient.getDatabase("yourDatabaseName");
MongoCollection<Document> collection = database.getCollection("yourCollectionName");
// Генерация 8 документов
for (int i = 0; i < 8; i++) {
Document todoDocument = createRandomDocument();
collection.insertOne(todoDocument);
}
// Закрытие подключения
mongoClient.close();
}
private static Document createRandomDocument() {
Random random = new Random();
String[] firstNames = {"Steven", "John", "Jane", "Alice", "Bob", "Charlie", "Diana", "Eve"};
String[] lastNames = {"King", "Doe", "Smith", "Johnson", "Brown", "Williams", "Jones", "Garcia"};
String[] jobIds = {"AD_PRES", "IT_PROG", "HR_REP", "SA_REP", "MK_MAN", "FI_MGR", "AC_MGR", "PR_REP"};
String firstName = firstNames[random.nextInt(firstNames.length)];
String lastName = lastNames[random.nextInt(lastNames.length)];
String email = firstName.charAt(0) + lastName.toLowerCase() + "@example.com";
String phoneNumber = String.format("%d.%d.%d", random.nextInt(900) + 100, random.nextInt(900) + 100, random.nextInt(9000) + 1000);
LocalDate hireDate = LocalDate.of(1987, random.nextInt(12) + 1, random.nextInt(28) + 1);
String jobId = jobIds[random.nextInt(jobIds.length)];
int salary = (random.nextInt(10) + 1) * 10000;
return new Document(Map.of(
"_id", new ObjectId(),
"FIRST_NAME", firstName,
"LAST_NAME", lastName,
"EMAIL", email,
"PHONE_NUMBER", phoneNumber,
"HIRE_DATE", hireDate,
"JOB_ID", jobId,
"SALARY", salary
));
}
}
Объяснение кода:
Подключение к MongoDB: Используется MongoClients.create() для подключения к локальной базе данных MongoDB.
Создание коллекции: Получаем доступ к нужной базе данных и коллекции.
Генерация документов: В цикле создаются 8 документов с помощью метода createRandomDocument(), который генерирует случайные значения для каждого поля.
Закрытие подключения: После завершения работы с базой данных, соединение закрывается.
Зависимости:
Не забудьте добавить зависимости для MongoDB Java Driver в ваш проект. Если вы используете Maven, добавьте следующий код в ваш pom.xml:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.6.0</version> <!-- Убедитесь, что используете последнюю версию -->
</dependency>
Этот код создаст 8 документов с рандомными значениями и вставит их в указанную коллекцию в MongoDB.
Напишите запрос MongoDB для отображения ФИО и даты рождения всех лиц из представленной колекции
Для отображения ФИО (фамилия, имя, отчество) и даты рождения всех лиц из коллекции в MongoDB, вы можете использовать метод find() с проекцией. Предположим, что в вашей коллекции поля для имени, фамилии и даты рождения называются FIRST_NAME, LAST_NAME и HIRE_DATE соответственно.
Вот пример запроса на MongoDB:
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import org.bson.Document;
public class MongoDBQueryExample {
public static void main(String[] args) {
// Подключение к MongoDB
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
MongoDatabase database = mongoClient.getDatabase("yourDatabaseName");
MongoCollection<Document> collection = database.getCollection("yourCollectionName");
// Выполнение запроса
MongoCursor<Document> cursor = collection.find()
.projection(Projections.fields(
Projections.excludeId(),
Projections.computed("FULL_NAME",
new Document("$concat", Arrays.asList("$FIRST_NAME", " ", "$LAST_NAME"))),
Projections.include("HIRE_DATE")
)).iterator();
// Обработка результатов
while (cursor.hasNext()) {
Document doc = cursor.next();
System.out.println(doc.toJson());
}
// Закрытие подключения
mongoClient.close();
}
}
Объяснение кода:
Используется Projections для создания проекции, аналогичной той, что была описана в запросе MongoDB.
Projections.computed используется для создания нового поля FULL_NAME с помощью оператора $concat.
Результаты выводятся в формате JSON.
Для отображения всех работников из коллекции и сортировки их по заработной плате в порядке уменьшения, вы можете использовать метод find() с сортировкой. В MongoDB это делается с помощью метода sort().
Вот пример кода на Java, который выполняет этот запрос:
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import org.bson.Document;
import static com.mongodb.client.model.Sorts.*;
public class MongoDBSortExample {
public static void main(String[] args) {
// Подключение к MongoDB
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
MongoDatabase database = mongoClient.getDatabase("yourDatabaseName");
MongoCollection<Document> collection = database.getCollection("yourCollectionName");
// Выполнение запроса с сортировкой по заработной плате в порядке убывания
MongoCursor<Document> cursor = collection.find()
.sort(descending("SALARY")) // Сортировка по полю SALARY в порядке убывания
.iterator();
// Обработка результатов
while (cursor.hasNext()) {
Document doc = cursor.next();
System.out.println(doc.toJson());
}
// Закрытие подключения
mongoClient.close();
}
}
Объяснение кода:
Подключение к MongoDB: Используется MongoClients.create() для подключения к локальной базе данных MongoDB.
Получение коллекции: Получаем доступ к нужной базе данных и коллекции.
Запрос с сортировкой:
collection.find(): Получаем все документы из коллекции.
.sort(descending("SALARY")): Сортируем результаты по полю SALARY в порядке убывания.
Обработка результатов: В цикле выводим каждый документ в формате JSON.
Закрытие подключения: После завершения работы с базой данных, соединение закрывается.
Для вычисления средней зарплаты всех работников в MongoDB вы можете использовать агрегатный запрос с оператором $group. Этот оператор позволяет группировать документы и выполнять вычисления, такие как подсчет средней зарплаты.
Вот пример кода на Java, который выполняет этот запрос:
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.model.Aggregates;
import com.mongodb.client.model.Accumulators;
import org.bson.Document;
import java.util.Arrays;
public class MongoDBAverageSalaryExample {
public static void main(String[] args) {
// Подключение к MongoDB
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
MongoDatabase database = mongoClient.getDatabase("yourDatabaseName");
MongoCollection<Document> collection = database.getCollection("yourCollectionName");
// Выполнение агрегатного запроса для вычисления средней зарплаты
Document averageSalary = collection.aggregate(Arrays.asList(
Aggregates.group(null, Accumulators.avg("averageSalary", "$SALARY"))
)).first();
// Вывод средней зарплаты
if (averageSalary != null) {
System.out.println("Средняя зарплата всех работников: " + averageSalary.getDouble("averageSalary"));
} else {
System.out.println("Нет данных для вычисления средней зарплаты.");
}
// Закрытие подключения
mongoClient.close();
}
}
Объяснение кода:
Подключение к MongoDB: Используется MongoClients.create() для подключения к локальной базе данных MongoDB.
Получение коллекции: Получаем доступ к нужной базе данных и коллекции.
Агрегатный запрос:
collection.aggregate(...): Выполняем агрегатный запрос.
Aggregates.group(null, Accumulators.avg("averageSalary", "$SALARY")): Группируем все документы (передаем null в качестве первого аргумента) и вычисляем среднюю зарплату с помощью оператора $avg.
Вывод результата: Если результат не равен null, выводим среднюю зарплату. В противном случае выводим сообщение о том, что нет данных.
Закрытие подключения: После завершения работы с базой данных, соединение закрывается.
System.out.println("Напишите запрос MongoDB для отображения всех данных из представленной таблицы");
todoCollection.find()
.forEach((Consumer<Document>) System.out::println);
мой пример
https://gitlab.com/synergy9980417/razdel2/6_5_mongo