Рубрики
Без рубрики

Руководство по MongoDB с Java

Узнайте, как использовать MongoDB с простым автономным Java-клиентом.

Автор оригинала: Shubham Aggarwal.

1. Обзор

В этой статье мы рассмотрим интеграцию MongoDB , очень популярной базы данных с открытым исходным кодом NoSQL с автономным Java-клиентом.

MongoDB написан на C++ и имеет довольно много надежных функций, таких как mapreduce, автоматическое сегментирование, репликация, высокая доступность и т. Д.

2. MongoDB

Давайте начнем с нескольких ключевых моментов о самом MongoDB:

  • хранит данные в JSON -подобных документах, которые могут иметь различные структуры
  • использует динамические схемы, что означает, что мы можем создавать записи, ничего не предопределяя
  • структура записи может быть изменена простым добавлением новых полей или удалением существующих

Вышеупомянутая модель данных дает нам возможность легко представлять иерархические отношения, хранить массивы и другие более сложные структуры.

3. Терминология

Понимание концепций в MongoDB становится проще, если мы можем сравнить их со структурами реляционных баз данных.

Давайте рассмотрим аналогии между Mongo и традиционной системой MySQL:

  • Таблица в MySQL становится Коллекцией в Mongo
  • Строка становится Документом
  • Столбец становится полем
  • Соединения определяются как связывание и встроенные документы

Это, конечно, упрощенный способ взглянуть на основные концепции MongoDB, но, тем не менее, полезный.

Теперь давайте погрузимся в реализацию, чтобы понять эту мощную базу данных.

4. Зависимости Maven

Нам нужно начать с определения зависимости драйвера Java для MongoDB:


    org.mongodb
    mongo-java-driver
    3.4.1

Чтобы проверить, была ли выпущена какая – либо новая версия библиотеки – отслеживайте выпуски здесь .

5. Использование MongoDB

Теперь давайте начнем реализовывать запросы Mongo с помощью Java. Мы будем следовать основным операциям CRUD, поскольку они лучше всего подходят для начала.

5.1. Установить Соединение С MongoClient

Во-первых, давайте установим соединение с сервером MongoDB. С версией.10.0 мы будем использовать MongoClient :

MongoClient mongoClient = new MongoClient("localhost", 27017);

А для более старых версий используйте Mongo class:

Mongo mongo = new Mongo("localhost", 27017);

5.2. Подключение к базе данных

Теперь давайте подключимся к нашей базе данных. Интересно отметить, что нам не нужно его создавать. Когда Монго увидит, что база данных не существует, он создаст ее для нас:

DB database = mongoClient.getDB("myMongoDb");

Иногда по умолчанию MongoDB работает в режиме аутентификации. В этом случае нам необходимо пройти аутентификацию при подключении к базе данных.

Мы можем сделать это, как показано ниже:

MongoClient mongoClient = new MongoClient();
DB database = mongoClient.getDB("myMongoDb");
boolean auth = database.authenticate("username", "pwd".toCharArray());

5.3. Показать Существующие Базы Данных

Давайте отобразим все существующие базы данных. Когда мы хотим использовать командную строку, синтаксис отображения баз данных аналогичен MySQL:

show databases;

В Java мы отображаем базы данных с помощью приведенного ниже фрагмента:

mongoClient.getDatabaseNames().forEach(System.out::println);

Выход будет:

local      0.000GB
myMongoDb  0.000GB

Выше, local является базой данных Mongo по умолчанию.

5.4. Создание коллекции

Давайте начнем с создания Коллекции (эквивалент таблицы для MongoDB) для нашей базы данных. Как только мы подключимся к нашей базе данных, мы сможем создать Коллекцию как:

database.createCollection("customers", null);

Теперь давайте отобразим все существующие коллекции для текущей базы данных:

database.getCollectionNames().forEach(System.out::println);

Выход будет:

customers

5.5. Сохранить – Вставить

Операция save имеет семантику сохранения или обновления: если присутствует id , она выполняет update , если нет – она выполняет insert .

Когда мы сохраняем нового клиента:

DBCollection collection = database.getCollection("customers");
BasicDBObject document = new BasicDBObject();
document.put("name", "Shubham");
document.put("company", "Baeldung");
collection.insert(document);

Объект будет вставлен в базу данных:

{
    "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
    "name" : "Shubham",
    "company" : "Baeldung"
}

Далее мы рассмотрим ту же операцию – save – с семантикой update .

5.6. Сохранить – Обновить

Давайте теперь рассмотрим save с update семантикой, работающей с существующим клиентом:

{
    "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
    "name" : "Shubham",
    "company" : "Baeldung"
}

Теперь, когда мы сохраним существующего клиента – мы обновим его:

BasicDBObject query = new BasicDBObject();
query.put("name", "Shubham");

BasicDBObject newDocument = new BasicDBObject();
newDocument.put("name", "John");

BasicDBObject updateObject = new BasicDBObject();
updateObject.put("$set", newDocument);

collection.update(query, updateObject);

База данных будет выглядеть следующим образом:

{
    "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
    "name" : "John",
    "company" : "Baeldung"
}

Как вы можете видеть, в этом конкретном примере save использует семантику update , потому что мы используем объект с заданным _id .

5.7. Чтение Документа Из Коллекции

Давайте поищем Документ в Коллекции , сделав запрос:

BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "John");
DBCursor cursor = collection.find(searchQuery);

while (cursor.hasNext()) {
    System.out.println(cursor.next());
}

Он покажет единственный Документ , который у нас уже есть в нашей Коллекции :

[
    {
      "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"),
      "name" : "John",
      "company" : "Baeldung"
    }
]

5.8. Удалить документ

Давайте перейдем к нашей последней операции CRUD, удалению:

BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "John");

collection.remove(searchQuery);

При выполнении приведенной выше команды наш единственный Документ будет удален из Коллекции .

6. Заключение

Эта статья была кратким введением в использование MongoDB из Java.

Реализацию всех этих примеров и фрагментов кода можно найти на GitHub – это проект на основе Maven, поэтому его должно быть легко импортировать и запускать как есть.