Поддерживает ли JongoDB Java
Начало работы с MongoDB и Java – CRUD
Вы можете установить com.Mongodb.Свойство WriteConcern, которое MongoTemplate будет использовать для операций записи, если оно еще не было указано через драйвер на более высоком уровне, такой как ком.Mongodb.Монго. Если свойство MongoTemplate WriteConcern не установлено, оно будет по умолчанию, установленную в DB или настройке коллекции водителя MongoDB.
Краткое содержание
В этом уроке мы рассмотрим, как начать работу с Mongodb и Java. Мы рассмотрим базовые операции CRUD (создать, прочитать, обновить, удалить) с использованием драйвера Java от MongoDB и Spring MongoDB MongoDB.
Ключевые моменты:
- Поддержка MongoDB для Java включает в себя широкий спектр функций.
- Spring обеспечивает поддержку конфигурации для MongoDB с использованием классов @Configuration на основе Java или пространства имен XML.
- Класс MongoTemplate – это полезная утилита для выполнения общих операций MongoDB и отображения объектов между документами и Pojos.
- Перевод исключений в портативную портативную иерархию исключения доступа к данным поддерживается.
- Служба преобразования весны интегрируется с картированием объектов MongoDB.
- Метаданные картирования на основе аннотаций доступны и могут быть расширены для поддержки других форматов.
- События жизненного цикла настойчивости и картирования поддерживаются.
- Представлены запросы, критерии и обновление DSL на базе Java.
- Поддерживается автоматическая реализация интерфейсов репозитория, включая методы искателя.
- Интеграция QueryDsl позволяет получить запросы с типами.
- Поддерживается стойкость по перекрестному магазину, что позволяет сохранять/извлеченные объекты JPA с использованием MongoDB.
- Приложение журнала Log4J предоставляется для интеграции MongoDB.
- Геопространственная интеграция доступна для работы с геопространственными данными.
Вопросы:
- Q1: Какие функции поддерживает MongoDB для Java?
- Q2: Как мы можем настроить MongoDB весной?
- Q3: Для чего используется класс Mongotemplate?
- Q4: Как исключения пружины в операциях MongoDB?
- Q5: Интеграция MongoDB с картированием объектов поддержки Spring?
- Q6: Can MongoDB поддерживать другие форматы метаданных?
- Q7: Поддерживает ли устойчивость MongoDB и соревнования жизненного цикла картирования?
- Q8: Каково преимущество использования запросов, критериев и обновления DSL на основе Java на основе Java?
- Q9: может автоматически реализовать пользовательские методы поиска в интерфейсах хранилища?
- Q10: Каково преимущество интеграции QueryDsl в MongoDB?
- Q11: Можно ли использовать MongoDB для устойчивости поперечного магазина?
- Q12: предоставляет ли MongoDB приложение журнала Log4J?
- Q13: поддерживает ли MongoDB геопространственные данные?
A1: поддержка MongoDB для Java включает в себя широкий спектр функций, таких как поддержка конфигурации пружины, отображение объектов, перевод исключений и многое другое.
A2: MongoDB можно настроить в пружине с помощью классов @Configuration на основе Java или пространства имен XML.
A3: класс Mongotemplate – это помощник, который повышает производительность, выполняя общие операции MongoDB и обеспечивая картирование объектов между документами и Pojos.
A4: Spring переводит исключения в свою портативную иерархию исключения доступа к данным.
A5: Да, интеграция MongoDB с Spring включает в себя сопоставление объектов, интегрированное с Spring’s Service.
A6: Да, метаданные картирования на основе аннотаций в MongoDB могут быть расширены для поддержки других форматов метаданных.
A7: Да, MongoDB поддерживает стойкость и соревнования по жизненному циклу.
A8: Запросы, критерии и обновление DSLS на основе Java предоставляют более безопасный и удобный способ построения запросов и обновления операций в MongoDB.
A9: Да, пружина может автоматически реализовать пользовательские методы поиска в интерфейсах хранилища.
A10: Интеграция QueryDsl в MongoDB позволяет защищать типа запросы.
A11: Да, MongoDB поддерживает устойчивость к поперечным магазинам, что позволяет сохранять/извлеченные объекты JPA с использованием MongoDB.
A12: Да, MongoDB предоставляет приложение журнала Log4J для интеграции с Log4J.
A13: Да, MongoDB обеспечивает интеграцию для работы с геопространственными данными.
Начиная
Чтобы начать поддержку Spring MongoDB, вам понадобится MongoDB 1.4 или выше и Java SE 5 или выше. Рекомендуется использовать последний выпуск производства (2.0.x на момент написания статьи).
Следуйте этим шагам, чтобы настроить рабочую среду:
- Настройка работающего сервера MongoDB. Обратитесь к руководству быстрого начала MongoDB для инструкций о том, как запустить экземпляр MongoDB.
- Создать пружинный проект в STS (Spring Tool Suite) или в любой другой интегрированной среде разработки (IDE).
- Включите зависимость Data Data MongoDB в POM вашего проекта.XML -файл:
- Убедитесь, что у вас есть правильная версия Spring, указанную в вашем POM.XML:
- Добавьте хранилище весеннего веха в свой POM.XML:
- Установите уровень регистрации log4j для отладки в log4j.Файл свойств:
- Создайте простой класс человека, чтобы сохранить:
- Создайте основное приложение для запуска:
<зависимость> <группа>орг.Springframework.данные</GroupId> <Артефактид>Spring-Data-Mongodb</artifactid> <версия>1.1.0.ВЫПУСКАТЬ</версия> </зависимость>
<характеристики> <весна.версия>3.1.2.ВЫПУСКАТЬ</весна.версия> </характеристики>
<Репозитории> <репозиторий> <идентификатор>весна-милестон</идентификатор> <имя>Репозиторий Maven Maven</имя> <URL>http: // Repo.Springsource.org/libs-milestone</URL> </репозиторий> </репозитории>
log4j.категория.орг.Springframework.данные.документ.mongodb = отладка log4j.Приложение.stdout.макет.Конверсионпаттерн = %d %5p %40.40c:%4l -%m%n
Пакет орг.весна.Mongodb.пример; публичный класс человек { Приватный идентификатор строки; Приватное название строки; частный int возраст; публичный человек (название строки, int age) { этот.имя = имя; этот.возраст = возраст; } public String getId () { вернуть идентификатор; } public String getName () { вернуть имя; } public int getage () { Возврат возраст; } @Override public String toString () { вернуть "человек [id =" + id + ", name =" + name + ", age =" + age + "]"; } }
Пакет орг.весна.Mongodb.пример; импорт статический орг.Springframework.данные.Mongodb.основной.запрос.Критерии.где; Импорт орг.апач.общеизвестное.Ведение журнала.Бревно; Импорт орг.апач.общеизвестное.Ведение журнала.Logfactory; Импорт орг.Springframework.данные.Mongodb.основной.Монгуоперации; Импорт орг.Springframework.данные.Mongodb.основной.Монготнерт; Импорт орг.Springframework.данные.Mongodb.основной.запрос.Запрос; Импорт ком.Mongodb.Монго; открытый класс MongoApp { Частный статический окончательный журнал журнала = logfactory.getLog (MongoApp.сорт); public static void main (string [] args) бросает исключение { Mongoperations mongoops = new mongotemplate (new mongo (), "база данных"); Монгупс.Вставить (новый человек («Джо», 34)); бревно.Информация (Mongoops.Findone (новый запрос (где ("имя").is ("Джо")), человек.сорт)); } }
Начало работы с MongoDB и Java – CRUD
Вы можете установить com.Mongodb.Свойство WriteConcern, которое MongoTemplate будет использовать для операций записи, если оно еще не было указано через драйвер на более высоком уровне, такой как ком.Mongodb.Монго . Если свойство MongoTemplate WriteConcern не установлено, оно будет по умолчанию, установленную в DB или настройке коллекции водителя MongoDB.
Поддерживает ли JongoDB Java
Поддержка MongoDB содержит широкий спектр функций, которые приведены ниже.
- Поддержка конфигурации пружины с использованием классов @configuration на основе Java или пространства имен XML для экземпляра драйвера монго и наборов реплик
- Mongotemplate Helper Class, который повышает производительность, выполняя общие операции Mongo. Включает интегрированное отображение объектов между документами и POJOS.
- Перевод исключений в портативную иерархию исключения доступа к данным Spring
- Функция обогащенного картирования объектов, интегрированное с службой преобразования весны
- Метаданные картирования на основе аннотаций, но расширяются для поддержки других форматов метаданных
- События жизненного цикла настойчивости и картирования
- Запросы, критерии и обновление DSL на основе Java
- Автоматическое реализацию интерфейсов репозитория, включая поддержку методов пользовательских искателей.
- Интеграция QueryDsl для поддержки-защитников типа.
- Поперечная стойкость – поддержка объектов JPA с прозрачно
- Log4j Hogpender
- Геопространственная интеграция
Для большинства задач вы обнаружите, что используете MongoTemplate или поддержку репозитория, которая оба используют богатые функции отображения. Mongotemplate-это место для поиска доступа к функциональности, таким как счетчики увеличения или специальные операции CRUD. Mongotemplate также предоставляет методы обратного вызова, чтобы вам было легко получить артефакты API низкого уровня, такие как Org.монго.БД для непосредственного общения с MongoDB. Цель с соглашениями об именах на различных артефактах API состоит в том, чтобы скопировать таковые в базовом драйвере JongoDB Java, чтобы вы могли легко нанести на карту существующие знания на весенних APIS.
5.1 Начало работы
Поддержка Spring MongoDB требует MongoDB 1.4 или выше и Java SE 5 или выше. Последний выпуск производства (2.0.x на момент написания этой статьи) рекомендуется. Легкий способ начала настройки рабочей среды – создать пружинный проект в STS.
Сначала вам нужно настроить работающий сервер MongoDB. Обратитесь к руководству быстрого начала MongoDB для объяснения того, как запустить экземпляр MongoDB. После установки начальный mongodb обычно является вопросом выполнения следующей команды: mongo_home/bin/mongod
Чтобы создать пружинный проект в STS, перейдите к файлу -> new -> Spring Stemplate Project -> Simple Spring Utility Project -> Нажмите «Да», когда будет. Затем введите проект и имя пакета, такое как Org.весна.Mongodb.пример.
Затем добавьте следующее в POM.Раздел XML -зависимостей.
орг.Springframework.данные Spring-Data-Mongodb 1.1.0.ВЫПУСКАТЬ
Также измените версию Spring в POM.XML быть
3.1.2.ВЫПУСКАТЬ
Вам также нужно будет добавить местоположение репозитория весеннего веха для Maven в ваш POM.XML, который находится на том же уровне вашего элемента
весна-милестон Репозиторий Maven Maven http: // Repo.Springsource.org/libs-milestone
Репозиторий также можно прозвать здесь.
Вы также можете установить уровень журнала для отладки, чтобы увидеть дополнительную информацию, отредактируйте Log4j.Файл свойств, чтобы иметь
log4j.категория.орг.Springframework.данные.документ.mongodb = отладка log4j.Приложение.stdout.макет.Конверсионпаттерн = %d %5p %40.40c:%4l -%m%n
Создайте простой класс человека, чтобы сохранить
упаковка орг.весна.Mongodb.пример; публичный сорт Человек < частный String ID; частный String name; частный инт возраст; публичный Человек (название строки, инт возраст) < этот.имя = имя; этот.возраст = возраст; > публичный String getId () < возвращаться идентификатор; > публичный String getName () < возвращаться имя; > публичный инт getage () < возвращаться возраст; > @Override публичный String toString () < возвращаться "Человек [id hl-string"> ", name hl-string"> ", age hl-string"> "]"; >>
И основное приложение для запуска
упаковка орг.весна.Mongodb.пример; Импортировать статический орг.Springframework.данные.Mongodb.основной.запрос.Критерии.где; Импортировать орг.апач.общеизвестное.Ведение журнала.Бревно; Импортировать орг.апач.общеизвестное.Ведение журнала.Logfactory; Импортировать орг.Springframework.данные.Mongodb.основной.Монгуоперации; Импортировать орг.Springframework.данные.Mongodb.основной.Монготнерт; Импортировать орг.Springframework.данные.Mongodb.основной.запрос.Запрос; Импортировать компонент.Mongodb.Монго; публичный сорт Монгопп < частный статический финал Log log = logfactory.getLog (MongoApp.сорт); публичный статический пустота main (string [] args) броски Исключение < MongoOperations mongoOps = новый Монготнер (новый Mongo (), "база данных"); Монгупс.вставлять(новый Человек("Джо", 34)); бревно.Информация (Mongoops.Найдите (новый Запрос (где ("имя").является("Джо")), Человек.сорт)); Монгупс.Droplection ("человек"); >>
Это даст следующий выход
10: 01: 32 062 отладки приложения.MongopersistentityIndExcreator: 80 - Анализ класса класса Org.весна.пример.Человек для информации об индексе. 10: 01: 32 265 отладка Ramework.данные.Mongodb.основной.Mongotemplate: 631 - вставьте dbobject, содержащие поля: [_class, возраст, имя] в коллекцию: человек 10: 01: 32,765 Отладка Ramework.данные.Mongodb.основной.MongoTemplate: 1243 - Findone с использованием запроса: < "name" : "Joe">в дБ.Сбор: база данных.Человек 10: 01: 32,953 Информация орг.весна.Mongodb.пример.MongoApp: 25 - человек [id = 4ddbba3c0be56b7e1b210166, имя = Джо, возраст = 34] 10: 01: 32,984 Отладка ramework.данные.Mongodb.основной.MongoTemplate: 375 - Dropped Collection [база данных.человек]
Даже в этом простом примере есть несколько вещей, которые нужно заметить
- Вы можете создать экземпляр центрального вспомогательного класса Spring Mongo, Mongotemplate, используя стандартный ком.Mongodb.Объект Mongo и имя базы данных для использования.
- Mapper работает со стандартными объектами POJO без необходимости каких -либо дополнительных метаданных (хотя вы можете предоставить эту информацию. Глянь сюда.).
- Конвенции используются для обработки поля идентификатора, преобразуя его как объект, когда хранятся в базе данных.
- Сопоставления конвенций могут использовать доступ поля. Обратите внимание, что у класса человека есть только Getters.
- Если имена аргументов конструктора соответствуют именам поля хранимого документа, они будут использованы для создания экземпляра объекта
5.2 примеры репозитория
Существует репозиторий GitHub с несколькими примерами, с которыми вы можете скачать и поиграть, чтобы почувствовать, как работает библиотека.
5.3 соединения с MongoDB с пружиной
Одна из первых задач при использовании MongoDB и Spring – создать COM.Mongodb.Объект Mongo с использованием контейнера IOC. Есть два основных способа сделать это, используя метаданные бобов на основе Java или метаданные на основе XML. Они обсуждаются в следующих разделах.
Для тех, кто не знаком с тем, как настроить пружинный контейнер с использованием метаданных бобов на основе Java вместо метаданных на основе XML, см. Введение высокого уровня в эталонных документах здесь, а также подробную документацию здесь.
5.3.1 регистрация экземпляра Mongo с использованием метаданных на базе Java
Пример использования метаданных бобов на основе Java для регистрации экземпляра COM.Mongodb.Монго показан ниже
Пример 5.1. Регистрация ком.Mongodb.Объект Mongo с использованием метаданных бобов на основе Java
@Configuration публичный сорт AppConfig < / * * Используйте стандартный API драйвера Mongo, чтобы создать COM.Mongodb.Монго экземпляр. */ публичный @Bean Mongo Mongo () броски Неизвестное хостекцепция < возвращаться новый Монго ("Localhost"); >>
Этот подход позволяет использовать стандартный com.Mongodb.Mongo API, для которого вы уже можете использовать использование, но также загрязняет код с помощью исключения проверенного исключения. Использование проверенного исключения нежелательно, так как метаданные на основе Java используют методы в качестве средства для установки зависимостей объекта, что затрагивает вызывающий код.
Альтернативой является регистрация экземпляра COM.Mongodb.Экземпляр Mongo с контейнером с использованием весеннего монгофакторию . По сравнению с созданием компонента.Mongodb.Экземпляр Mongo непосредственно, подход Factorybean не вызывает проверенное исключение и имеет дополнительное преимущество в том, что он также предоставляет контейнер реализацией транслятора исключений, которая переводит исключения MongoDB на исключения в портативной иерархии Spring DataCescessexception для классов доступа к данным. Эта иерархия и использование @Repository описаны в функциях поддержки DAO Spring.
Пример метаданных бобов на основе Java, который поддерживает перевод исключений на аннотированных классах @Repository, показан ниже:
Пример 5.2. Регистрация ком.Mongodb.Объект Mongo с использованием Spring’s Mongofactorybean и обеспечение поддержки перевода исключений Spring
@Configuration публичный сорт AppConfig < / * * Заводской фасоль, который создает ком.Mongodb.Экземпляр монго */ публичный @Bean Mongofactorybean mongo () < MongoFactoryBean mongo = новый Mongofactorybean (); монго.сетост ("Localhost"); возвращаться монго; >>
Чтобы получить доступ к ком.Mongodb.Объект Mongo, созданный Mongofactorybean в других @configuration или ваших собственных классах, используйте «частное @autowired mongo mongo;».
5.3.2 Регистрация экземпляра Mongo с использованием метаданных на основе XML
В то время как вы можете использовать традиционное пространство имен XML Spring, чтобы зарегистрировать экземпляр COM.Mongodb.Mongo с контейнером, XML может быть довольно многословным, как это общая цель. Пространства имен XML являются лучшей альтернативой настройке общепринятых объектов, таких как экземпляр Mongo. Пространство имен Mongo выводит вас для создания местоположения сервера экземпляров Mongo, наборов реплик и опций.
Чтобы использовать элементы пространства имен Mongo, вам необходимо обратить внимание на схему Mongo:
Пример 5.3. XML схема для настройки MongoDB
XMLNS"=""http: // www.Springframework.орг/схема/фасоль " XMLNS: XSI"=""http: // www.W3.org/2001/xmlschema-instance " XMLNS: контекст"=""http: // www.Springframework.орг/схема/контекст " XMLNS: Mongo"=""http: // www.Springframework.орг/схема/данные/монго " XSI: схемалокация"=" "http: // www.Springframework.org/схема/контекст http: // www.Springframework.org/schema/context/spring-context-3.0.xsd http: // www.Springframework.org/schema/data/mongo http: // www.Springframework.org/schema/data/mongo/spring-mongo-1.0.xsd http: // www.Springframework.org/схема/бобы http: // www.Springframework.Org/Schema/Beans/Spring-Beans-3.0.xsd ">
Ниже показана более продвинутая конфигурация с Mongoptions (обратите внимание, что это не рекомендуемые значения)
Пример 5.4. XML схема для настройки COM.Mongodb.Mongo Object с Mongoptions
хозяин"=""Localhost" порт"=""27017"> соединения в хост"=""8" потоки с приготовлением к блоку для соединения-мультипликации"=""4" Connect-Timeout"=""1000" Максимальный время"=""1500>" Автопользовательский-срез"=""истинный" сокет-хвост"=""истинный" розетка времени"=""1500" раб"=""истинный" писать номера"=""1" написать время"=""0" write-fsync"=""истинный"/>
Конфигурация с использованием наборов реплик показана ниже.
Пример 5.5. XML схема для настройки com.Mongodb.Объект Mongo с наборами реплик
идентификатор"=""Replicasetmongo" реплика"=""127.0.0.1: 27017, Localhost: 27018 "/>
5.3.3 Интерфейс MongoDBFactory
В то время как ком.Mongodb.Mongo – это точка входа в API драйвера MongoDB, подключенный к конкретному экземпляру базы данных MongoDB, требуется дополнительная информация, такая как имя базы данных, а также дополнительное имя пользователя и пароль. С этой информацией вы можете получить ком.Mongodb.DB объект и доступ к всем функциональности конкретного экземпляра базы данных MongoDB. Весна предоставляет орг.Springframework.данные.Mongodb.основной.Интерфейс MongoDBFactory, показанный ниже, чтобы подключение к начальной загрузке к базе данных.
публичный интерфейс Mongodbfactory < DB getDb() броски DataCcessException; DB getDB (String dbname) броски DataCcessException; >
В следующих разделах показано, как вы можете использовать Contiainer с метаданными на основе Java или XML для настройки экземпляра интерфейса MongoDBFactory. В свою очередь, вы можете использовать экземпляр MongoDBFactory для настройки MongoTemplate.
Класс орг.Springframework.данные.Mongodb.основной.SimpleMongodBfactory предоставляет реализацию интерфейса MongoDBFactory и создается со стандартным компонентом.Mongodb.Экземпляр Mongo, имя базы данных и необязательная организация.Springframework.данные.аутентификация.Аргумент конструктора пользователей.
Вместо использования контейнера IOC для создания экземпляра Mongotemplate, вы можете просто использовать их в стандартном коде Java, как показано ниже.
публичный сорт Монгопп < частный статический финал Log log = logfactory.getLog (MongoApp.сорт); публичный статический пустота main (string [] args) броски Исключение < MongoOperations mongoOps = новый Монготнер (New SimpleMongodBfactory (New Mongo (), "База данных")); Монгупс.вставлять(новый Человек("Джо", 34)); бревно.Информация (Mongoops.Найдите (новый Запрос (где ("имя").является("Джо")), Человек.сорт)); Монгупс.Droplection ("человек"); >>
Код жирным шрифтом выделяет использование SimpleMongodBfactory и является единственной разницей между списком, показанным в разделе «Начало работы».
5.3.4 Регистрация экземпляра MongoDBFactory с использованием метаданных на базе Java
Чтобы зарегистрировать экземпляр MongoDBFactory с контейнером, вы пишете код, очень похожий на то, что было выделено в предыдущем списке кода. Простой пример показан ниже
@Configuration публичный сорт Монгоконфигурация < публичный @Bean Mongodbfactory mongodbfactory () броски Исключение < возвращаться новый SimpleMongoDBFactory (новый Mongo (), "база данных"); >>
Чтобы определить имя пользователя и пароль создать экземпляр org.Springframework.данные.аутентификация.Пользователи и передайте его в конструктор, как показано ниже. Этот список также показывает использование MongoDBFactory Register. Экземпляр Mongotemplate с контейнером.
@Configuration публичный сорт Монгоконфигурация < публичный @Bean Mongodbfactory mongodbfactory () броски Исключение < UserCredentials userCredentials = новый Пользователи (пользователи ("Джо", "Секрет"); возвращаться новый SimpleMongoDBFactory (новый Mongo (), "база данных", пользователи); > публичный @Bean Монготаксист броски Исключение < возвращаться новый Mongotemplate (mongodbfactory ()); >>
5.3.5 Регистрация экземпляра MongoDBFactory с использованием метаданных на основе XML
Пространство имен Mongo обеспечивает соютный способ создания SimpleMongodBfactory по сравнению с использованием пространства имен. Простое использование показано ниже
dbname"=""база данных">
В приведенном выше примере ком.Mongodb.Экземпляр Mongo создается с помощью хоста по умолчанию и номера порта. SimpleMongoDBFactory, зарегистрированный в контейнере, идентифицируется идентификатором «MongoDBFactory», если не указано значение для атрибута ID.
Вы также можете предоставить хост и порт для базового ком.Mongodb.Экземпляр Mongo, как показано ниже, в дополнение к имени пользователя и пароля для базы данных.
идентификатор"=""nothermongodbfactory" хозяин"=""Localhost" порт"=""27017" dbname"=""база данных" имя пользователя"=""Джо" пароль"=""Секрет"/>
Если вам нужно настроить дополнительные параметры на ком.Mongodb.Экземпляр Mongo, который используется для создания SimpleMongodBfactory, вы можете обратиться к существующему бобу, используя атрибут Mongo-Ref, как показано ниже. Чтобы показать еще одну общую шаблон использования, этот список показывает использование заполнителя свойства для параметризации конфигурации и создания монгоперата .
расположение"=""ClassPath:/com/myApp/mongodb/config/mongo.характеристики"/> хозяин"=""$" порт"=""$"> соединения в хост"=""$" потоки с приготовлением к блоку для соединения-мультипликации"=""$" Connect-Timeout"=""$" Максимальный время"=""$" Автопользовательский-срез"=""$" сокет-хвост"=""$" розетка времени"=""$" раб"=""$" писать номера"=""1" написать время"=""0" write-fsync"=""истинный"/> dbname"=""база данных" монго-реф"=""Монго"/> идентификатор"=""Еще один монгоперат" сорт"=""Орг.Springframework.данные.Mongodb.основной.Монгоперат "> имя"=""MongoDBFactory" рефери"=""MongoDBFactory"/>
5.4 Введение в Mongotemplate
Класс MongoTemplate, расположенный в пакете Org.Springframework.данные.документ.MongoDB, является центральным классом поддержки MongoDB весной. Шаблон предлагает удобные операции для создания, обновления, удаления и запроса для документов MongoDB и обеспечивает отображение между вашими доменными объектами и документами MongoDB.
После настройки Mongotemplate безопасен для потока и может быть повторно использован в нескольких случаях.
Картирование между документами MongoDB и классами доменов выполняется путем делегирования в реализацию интерфейса монгоконвертера . Spring предоставляет две реализации, SimplemappingConverter и Mongompapping Converter, но вы также можете написать свой собственный конвертер. Пожалуйста, обратитесь к разделу о MongoCoverters для получения более подробной информации.
Класс Монготапса реализует интерфейсные монгуоперации . В максимально возможной степени методы монгуопераций названы в честь методов, доступных на объекте сбора драйверов MongoDB, как для того, чтобы API знакома существующим разработчикам MongoDB, которые привыкли к API драйвера. Например, вы найдете такие методы, как «Find», «FindandModify», «FindOne», «INSERT», «Удалить», «Сохранить», «Обновление» и «UpdateMulti». Цель дизайна состояла в том, чтобы сделать это как можно более простым, чтобы переходить между использованием базового водителя MongoDB и монгуоперациями . Основное различие между двумя API заключается в том, что Mongoperations можно передавать объекты домена вместо dbobject, и существуют свободные API для запросов, критериев и операций обновления вместо заполнения dbobject для указания параметров для этих операций.
Предпочтительный способ ссылаться на операции на экземпляре MongoTemplant – через его интерфейсные монгуоперации .
Реализация преобразователя по умолчанию, используемая MongoTemplate, является MongoMappingConverter. В то время как монгомиппинг -конвертер может использовать дополнительные метаданные для указания отображения объектов с документами, он также способен преобразовать объекты, которые не содержат аддитональных метаданных, используя некоторые соглашения для отображения идентификаторов и имен сбора. Эти конвенции, а также использование картирования аннотаций объясняются в главе отображения.
В выпуске M2 SimplemappingConverter был по умолчанию, и этот класс в настоящее время устарел, поскольку его функциональность была подготовлена MongomappingConverter.
Другая центральная особенность Mongotemplate – это перевод исключений исключений, брошенных в драйвере JangoDB Java, в портативную иерархию исключения доступа к данным Spring. Обратитесь к разделу о переводе исключений для получения дополнительной информации.
Несмотря на то, что на монготаплете есть много удобных методов, которые помогут вам легко выполнять общие задачи, если вам необходимо получить доступ к API драйвера MongoDB непосредственно для доступа к функциональности, не подвергаемом явно раскрыты. Обратные вызовы дадут вам ссылку на любой ком.Mongodb.Коллекция или ком.Mongodb.DB объект. Пожалуйста, смотрите обратные вызовы в разделе для получения дополнительной информации.
Теперь давайте посмотрим на примеры того, как работать с MongoTemplate в контексте пружинного контейнера.
5.4. Существующая монготнерская
Вы можете использовать Java для создания и регистрации экземпляра MongoTemplate, как показано ниже.
Пример 5.6. Регистрация ком.Mongodb.Объект Mongo и включение поддержки перевода на исключение весны
@Configuration публичный сорт AppConfig < публичный @Bean Mongo Mongo () броски Исключение < возвращаться новый Монго ("Localhost"); > публичный @Bean Монготаксист броски Исключение < возвращаться новый Mongotemplate (mongo (), "MyDataBase"); >>
Есть несколько перегруженных конструкторов MongoTemplate. Это
- Монгоперат (Mongo Mongo, String DatabaseName) – берет ком.Mongodb.Объект Mongo и имя базы данных по умолчанию для работы с.
- Монгоперат (Mongo Mongo, String DatabaseName, Usercredentials Usercredentials) – добавляет имя пользователя и пароль для аутентификации с базой данных.
- Монгоперат (MongoDBFactory MongoDBFactory) – принимает объект MongoDBFactory, который инкапсулировал ком.Mongodb.Объект Mongo, имя базы данных, а также имя пользователя и пароль.
- Монгоперат (MongodBfactory MongoDBFactory, MongoConverter MongoConverter) – добавляет монгоконвертер для использования для картирования.
Вы также можете настроить монготаппер с помощью Spring XML схемы.
"Localhost" порт ="27017"/>"Монготрет" сорт"=""Орг.Springframework.данные.Mongodb.основной.Монгоперат "> "Монго"/> "DatabaseName" значение ="Геопространство"/>
Другие необязательные свойства, которые вы можете установить при создании монготнера, – это писательница по умолчанию .
Предпочтительный способ ссылаться на операции на экземпляре MongoTemplant – через его интерфейсные монгуоперации .
PriterSultChecking Policy
Когда в разработке очень удобно либо журналировать, либо бросить исключение, если com.Mongodb.WriterSult, возвращенный из любой операции MongoDB, содержит ошибку. Довольно часто забыть сделать это во время разработки, а затем в конечном итоге приложение, которое, похоже, успешно работает, но на самом деле база данных не была изменена в соответствии с вашими ожиданиями. Установите свойство MongoTemplate PriterSultChecking в перечисление со следующими значениями, журналом, исключением или никто, чтобы либо записать ошибку, бросить и исключить, либо ничего не сделать. По умолчанию – использовать стоимость witeresultchecking none.
WriteConcern
Вы можете установить com.Mongodb.Свойство WriteConcern, которое MongoTemplate будет использовать для операций записи, если оно еще не было указано через драйвер на более высоком уровне, такой как ком.Mongodb.Монго . Если свойство MongoTemplate WriteConcern не установлено, оно будет по умолчанию, установленную в DB или настройке коллекции водителя MongoDB.
WriteConcernResolver
Для более расширенных случаев, когда вы хотите установить различные значения writeConcern на основе для перспективы (для удаления, обновления, вставки и сохранения операций), интерфейс стратегии, называемый writeconconcersResolver . Поскольку Mongotemplate используется для сохранения Pojos, WriteConconcersResolver позволяет создавать политику, которая может сопоставить определенный класс Pojo с writeConcern Value. Интерфейс WriteConconcernResolver показан ниже.
публичный интерфейс WriteConcernResolver
ПРОДОЛЖЕНИЕ В Аргументе, Mongoaction, – это то, что вы используете для определения значения WriteConcern, который будет использоваться или использовать значение самого шаблона в качестве дефолта. Mongoaction содержит название коллекции, написанное на Java.ланг.Класс Pojo, преобразованный dbobject, а также операция как перечисление (Mongoactionoperation: удалить, обновить, вставить, insert_list, сохранение) и несколько других частей контекстной информации. Например,
Частный класс myAppWriteConcernResolver реализует writeConconResolver < public WriteConcern resolve(MongoAction action) < if (action.getEntityClass().getSimpleName().contains("Audit")) < return WriteConcern.NONE; >еще если (действие.getEntityClass ().getSiMplename ().содержит ("метаданные"))) < return WriteConcern.JOURNAL_SAFE; >Возвращение действия.getDefaultWriteConcern (); >>
5.5 Сохранение, обновление и удаление документов
Mongotemplate предоставляет вам простой способ сохранить, обновлять и удалять ваши объекты домена и отобразить эти объекты с документами, хранящиеся в MongoDB.
Учитывая простой класс, такой как человек
публичный сорт Человек < частный String ID; частный String name; частный инт возраст; публичный Человек (название строки, инт возраст) < этот.имя = имя; этот.возраст = возраст; > публичный String getId () < возвращаться идентификатор; > публичный String getName () < возвращаться имя; > публичный инт getage () < возвращаться возраст; > @Override публичный String toString () < возвращаться "Человек [id hl-string"> ", name hl-string"> ", age hl-string"> "]"; >>
Вы можете сохранить, обновить и удалять объект, как показано ниже.
Mongoperations – это интерфейс, который реализует Mongotemplate.
упаковка орг.весна.пример; Импортировать статический орг.Springframework.данные.Mongodb.основной.запрос.Критерии.где; Импортировать статический орг.Springframework.данные.Mongodb.основной.запрос.Обновлять.обновлять; Импортировать статический орг.Springframework.данные.Mongodb.основной.запрос.Запрос.запрос; Импортировать Джава.утилит.Список; Импортировать орг.апач.общеизвестное.Ведение журнала.Бревно; Импортировать орг.апач.общеизвестное.Ведение журнала.Logfactory; Импортировать орг.Springframework.данные.Mongodb.основной.Монгуоперации; Импортировать орг.Springframework.данные.Mongodb.основной.Монготнерт; Импортировать орг.Springframework.данные.Mongodb.основной.Simplemongodbfactory; Импортировать компонент.Mongodb.Монго; публичный сорт Монгопп < частный статический финал Log log = logfactory.getLog (MongoApp.сорт); публичный статический пустота main (string [] args) броски Исключение < MongoOperations mongoOps = новый Монготнер (новый SimpleMongoDBFactory (новый Mongo (), "база данных")); Человек p = новый Человек("Джо", 34); // вставка используется для первоначального хранения объекта в базе данных. Монгупс.вставить (p); бревно.Информация("Вставлять: " + п); // Находить P = Mongoops.FindById (с.getId (), человек.сорт); бревно.Информация("Найденный: " + п); // Обновлять Монгупс.UpdateFirst (запрос (где ("имя").является("Джо")), обновлять("возраст", 35), Человек.сорт); P = Mongoops.Найти (запрос (где ("имя").является("Джо")), Человек.сорт); бревно.Информация("Обновлено:" + п); // Удалить Монгупс.удалить (p); // проверить, что удаление сработало Перечислите People = Mongoops.Финсалл (человек.сорт); бревно.Информация("Количество людей =:" + люди.размер()); Монгупс.Droplection (человек.сорт); >>
Это даст следующий вывод журнала (включая сообщения отладки от самого Mongotemplate)
Отладка приложения.MongopersistentityIndExcreator: 80 - Анализ класса класса Org.весна.пример.Человек для информации об индексе. Отладочная работа.данные.Mongodb.основной.Mongotemplate: 632 - вставьте dbobject, содержащие поля: [_class, возраст, имя] в коллекцию: Информация о человеке орг.весна.пример.MongoApp: 30 - вставка: человек [id = 4ddc6e784ce5b1eba3ceaf5c, name = joe, возраст = 34].данные.Mongodb.основной.MongoTemplate: 1246 - Findone с использованием запроса: < "_id" : < "$oid" : "4ddc6e784ce5b1eba3ceaf5c">> в дБ.Сбор: база данных.Информация о человеке.весна.пример.MongoApp: 34 - найдено: человек [id = 4ddc6e784ce5b1eba3ceaf5c, name = joe, возраст = 34].данные.Mongodb.основной.Mongotemplate: 778 - Обновление вызова, используя запрос: < "name" : "Joe">и обновление: < "$set" : < "age" : 35>> В коллекции: работа с отладками человека.данные.Mongodb.основной.MongoTemplate: 1246 - Findone с использованием запроса: < "name" : "Joe">в дБ.Сбор: база данных.Информация о человеке.весна.пример.MongoApp: 39 - Обновлено: человек [id = 4ddc6e784ce5b1eba3ceaf5c, name = joe, возраст = 35].данные.Mongodb.основной.MongoTemplate: 823 - Удалите, используя запрос: < "id" : "4ddc6e784ce5b1eba3ceaf5c">В коллекции: информация о личности орг.весна.пример.MongoApp: 46 - Количество людей =: 0 отладочная работа.данные.Mongodb.основной.MongoTemplate: 376 - Dropped Collection [база данных.человек]
Произошло неявное преобразование с использованием монгоконвертера между строкой и ObjectId, как хранится в базе данных, и распознавание соглашения о свойстве «ID».
Этот пример предназначен для того, чтобы показать использование сохранения, обновления и удаления операций на Mongotemplate, а не для демонстрации сложных функций отображения
Query Stynax, используемый в примере, более подробно объясняется в разделе «Запрос документов».
5.5.1 Как обрабатывается поле «_id» в картировании
MongoDB требует, чтобы у вас было поле «_id» для всех документов. Если вы не предоставите один, драйвер назначит ObjectId сгенерированным значением. При использовании MongompappingConverter есть определенные правила, которые регулируют, как свойства из класса Java сопоставлены с этим полем «_id».
В следующем изложено, какое свойство будет сопоставлено с полем «_id»:
- Свойство или поле, аннотированное с @id (org.Springframework.данные.аннотация.ID) будет отображаться в поле «_id».
- Свойство или поле без аннотации, но названный ID будет отображаться в поле «_id».
Следующее изложено, какое преобразование типа, если таковое имеется, будет сделано на свойстве, отображенном в поле _id при использовании MappingMongoConverter, по умолчанию для MongoTemplate .
- Свойство или поле идентификатора, объявленная как строка в классе Java, будет преобразована и хранятся как объект, если это возможно, с помощью пружинного преобразователя . Допустимые правила конвертации делегируются водителю JangoDB Java. Если он не может быть преобразован в ObjectId, то значение будет храниться как строка в базе данных.
- Свойство или поле ID, объявленное как Biginteger в классе Java, будут преобразованы и хранятся в виде объекта с использованием пружинного преобразователя .
Если в классе Java не присутствует поле или свойство или свойство, то неявный файл «_id» будет сгенерирован водителем, но не нанесен на карту свой свойство или поле класса Java.
Когда запрос и обновление Mongotemplate будет использовать преобразователь для обработки преобразования объектов запроса и обновления, которые соответствуют вышеуказанным правилам для сохранения документов, поэтому имена поля и типы, используемые в ваших запросах.
5.5.2 типа картирование
Поскольку коллекции MongoDB могут содержать документы, которые представляют экземпляры различных типов. Отличный пример здесь – если вы храните иерархию классов или просто проходите класс со свойством объекта типа . В последнем случае значения, удерживаемые внутри этой собственности, должны быть правильно прочитаны при получении объекта. Таким образом, нам нужен механизм для хранения информации типа вместе с фактическим документом.
Чтобы достичь этого, MappingMongoConverter использует абстракцию Mongotyper с Defaultmongotypymapper, поскольку она является основной реализацией. Его поведение по умолчанию хранит полностью квалифицированное имя класса под _class внутри документа для документа верхнего уровня, а также для каждого значения, если это сложный тип и подтип типа свойства объявленного.
Пример 5.7. Тип картирования
публичный сорт Образец < Contact value; >публичный абстрактный сорт Контакт < … >публичный сорт Человек расширяется Контакт < … >Образец образец = новый Образец(); образец.значение = новый Человек(); монгоперат.Сохранить (образец); < "_сорт" : "Ком.acme.Образец", "ценить" : < "_сорт" : "Ком.acme.Человек" >>
Как вы можете видеть, мы храним информацию типа для фактического класса корневого класса, а также для вложенного типа, поскольку он сложный и подтип контакта . Так что, если вы сейчас используете Mongotemplate.Findall (объект.Класс, «Пример») Мы можем узнать, что хранящий документ должен быть примером экземпляра. Мы также можем выяснить, что стоимость имущества должно быть человеком на самом деле.
Настройка картирования типа
Если вы хотите не писать все имя класса Java в качестве информации о типе, но, скорее, хотите использовать какой -то ключ, вы можете использовать аннотацию @typealias в классе сущности, который сохраняется. Если вам нужно настроить картирование еще больше, посмотрите на интерфейс TypeNformationMapper. Экземпляр этого интерфейса может быть настроен на по умолчании, что может быть настроена в очередь на картирование MongoConverter .
5.5.3 метода для сохранения и вставки документов
Существует несколько удобных методов на монготапле для сохранения и вставки ваших объектов. Чтобы иметь более мелкозернистый контроль над процессом преобразования, вы можете зарегистрировать пружинные преобразователи с помощью MappingMongoConverter, например, преобразователя и преобразователя .
Разница между операциями вставки и сохранения заключается в том, что операция сохранения выполнит вставку, если объект еще не присутствует.
Простой случай использования операции сохранения – сохранить pojo. В этом случае имя коллекции будет определена по имени (не полностью качественно) класса. Вы также можете вызвать операцию сохранения с конкретным именем коллекции. Коллекция для хранения объекта можно переопределить, используя метаданные отображения.
При вставке или сохранении, если свойство идентификатора не установлено, предположение состоит в том, что его значение будет автогенерировано базой данных. Таким образом, для аутогенерации объекта, чтобы добиться успеха типа свойства/поля идентификатора в вашем классе, должен быть либо строкой, объектом, или BigInteger .
Вот основной пример использования операции сохранения и получения ее содержимого.
Пример 5.8. Вставка и получение документов с использованием монгоператора
Импортировать статический орг.Springframework.данные.Mongodb.основной.запрос.Критерии.где; Импортировать статический орг.Springframework.данные.Mongodb.основной.запрос.Критерии.запрос; … Человек p = новый Человек("Боб", 33); монгоперат.вставить (p); Человек qp = монготнерт.Найти (запрос (где ("возраст").является(33)), Человек.сорт);
Операции вставки/сохранения, доступные для вас, указаны ниже.
- пустота сохранять (Object ObjectOsave) Сохранить объект в коллекцию по умолчанию.
- пустота сохранять (Object ObjectToSave, String CollectionName) Сохраните объект в указанном коллекции.
Аналогичный набор операций вставки перечислен ниже
- пустота вставлять (Object ObjectToSave) Вставьте объект в коллекцию по умолчанию.
- пустота вставлять (Object ObjectToSave, String CollectionName) Вставьте объект в указанную коллекцию.
В какую коллекцию будут сохранены мои документы?
Есть два способа управления именем сбора, которые используются для работы в документах. Имя коллекции по умолчанию, которое используется,-это имя класса, измененное для начала с буквы с нижним часом. Итак, ком.тест.Человеческий класс будет храниться в коллекции “ЧЕЛОВЕК”. Вы можете настроить это, предоставив другое имя коллекции, используя аннотацию @Document. Вы также можете переопределить имя коллекции, предоставив свое собственное имя коллекции в качестве последнего параметра для выбранных вызовов метода MongoTemplate.
Вставка или сохранение отдельных объектов
Драйвер MongoDB поддерживает вставку сбора документов в одну операцию. Методы в интерфейсе MongoPerations, которые поддерживают эту функциональность, перечислены ниже
- вставлять Вставьте объект. Если есть существующий документ с тем же идентификатором, тогда возникает ошибка.
- вставить Принимает коллекцию объектов в качестве первого параметра. Этот метод осматривает каждый объект и вводит его в соответствующий сбор на основе правил, указанных выше.
- сохранять Сохраните объект OveWriting любой объект, который может существовать с тем же идентификатором.
Вставка нескольких объектов в партию
Драйвер MongoDB поддерживает вставку сбора документов в одну операцию. Методы в интерфейсе MongoPerations, которые поддерживают эту функциональность, перечислены ниже
- вставлять Методы, которые принимают коллекцию в качестве первого аргумента. Это вставляет список объектов в одну партию записи в базу данных.
5.5.4 Обновление документов в коллекции
Для обновлений мы можем выбрать обновление первого документа, найденного с использованием MongoPhere Method Method Firest, или мы можем обновить все документы, которые были обнаружены, чтобы соответствовать запросу, используя метод UpdateMulti . Вот пример обновления всех сберегательных учетных записей, где мы добавляем один раз 50 долларов.00 бонус к балансу с помощью оператора $ inc.
Пример 5.9. Обновление документов с использованием MongoTemplate
Импортировать статический орг.Springframework.данные.Mongodb.основной.запрос.Критерии.где; Импортировать статический орг.Springframework.данные.Mongodb.основной.запрос.Запрос; Импортировать статический орг.Springframework.данные.Mongodb.основной.запрос.Обновлять; . WriterSult wr = mongotemplate.UpdateMulti (новый Запрос (где ("Счета.тип аккаунта").IS (аккаунт.Тип.Сбережения)), новый Обновлять().Inc ("Счета.$.баланс", 50.00), Счет.сорт);
В дополнение к запросу, обсуждаемому выше, мы предоставляем определение обновления, используя объект обновления. У класса обновлений есть методы, которые соответствуют модификаторам обновления, доступными для MongoDB.
Как видите, большинство методов возвращают объект Update, чтобы обеспечить беглый стиль для API.
Методы выполнения обновлений для документов
- Обновление Обновляет первый документ, который соответствует критериям документа запроса с предоставленным обновленным документом.
- UpdateMulti Обновления всех объектов, которые соответствуют критериям документа запроса с предоставленным обновленным документом.
Начало работы с MongoDB и Java – CRUD
Регистрация водителя драйверов MongoDB теперь включена через популярный API SLF4J, поэтому я добавил резерв в POM.XML и резерв файла конфигурации.XML .
Введение
В этом самом первом сообщении в блоге серии Java Quick Start я покажу вам, как настроить ваш проект Java с Maven и выполнить команду MongoDB в Java. Затем мы рассмотрим наиболее распространенные операции, такие как создание, чтение, обновление и удаление – используя драйвер JangoDB Java . Я также покажу вам некоторые из наиболее мощных вариантов и функций, доступных в рамках драйвера MongoDB Java для каждой из этих операций, что дает вам действительно отличную основу для строительства, когда мы проходим через серию.
В будущих сообщениях в блоге мы будем двигаться дальше и работать:
Многодокументные кислотные транзакции.
Mongodb Java Reactive Streams драйвер.
Почему mongodb и java?
Java является самым популярным языком в ИТ -индустрии на дату этого сообщения в блоге, и разработчики проголосовали за MongoDB в качестве самой разыскиваемой базы данных четыре года подряд . В этой серии сообщений в блоге я продемонстрирую, насколько мощные эти две замечательные технологии, когда они объединяются и как вы можете получить доступ к этой власти.
Предварительные условия
Чтобы следовать, вы можете использовать любую среду, которая вам нравится, и интегрированная среда разработки по вашему выбору. Я использую Maven 3.6.2 и Java OpenJDK 13, но весь код будет совместим с Java Versions 8–13, поэтому не стесняйтесь использовать JDK по вашему выбору и обновить версию Java соответственно в POM.Файл XML мы собираемся настроить.
Для кластера MongoDB мы будем использовать кластер MongoDB без M0 MongoDB из MongoDB Atlas . Если у вас его еще нет, проверьте мое начало в блоге M0 Cluster Post.
Получите бесплатный кластер M0 на Mongodb Atlas сегодня. Это бесплатно навсегда, и вы сможете использовать его для работы с примерами этой серии блогов.
Давайте прыгнем и посмотрим, насколько хорошо Java и MongoDB работают вместе.
Настройка
Начнем с того, что нам нужно будет настроить новый проект Maven. У вас есть два варианта на данный момент. Вы можете либо клонировать этот репозиторий GIT серии, либо создать и настроить проект Maven.
Использование репозитория GIT
Если вы решите использовать GIT, вы немедленно получите весь код. Я все еще рекомендую вам прочитать ручную настройку.
Вы можете клонировать репозиторий, если вам нравится следующая команда.
Или вы можете скачать репозиторий как файл Zip .
Настройка вручную
Вы можете использовать свою любимую IDE для создания нового проекта Maven для вас, либо вы можете создать проект Maven вручную. В любом случае, вы должны получить следующую архитектуру папки:
Пом.Файл XML должен содержать следующий код:
Чтобы убедиться, что все работает правильно, вы сможете создать и запустить простой “Hello MongoDB!”Программа. В src/main/java/com/mongodb/Quickstart, создайте Hellomongodb.Файл Java:
Затем составьте и выполните его с помощью IDE или используйте командную строку в корневом каталоге (где папка SRC):
Результат должен выглядеть так:
Примечание. Если вы видите некоторые предупреждения о незаконном рефлексивном доступе от Guice.Ява, это безопасно игнорировать их. Guice используется Maven и нуждается в обновлении. Вы можете прочитать больше об этом в этой проблеме GitHub . Эти предупреждения исчезнут в будущем выпуске Guice и Maven.
Соединение с Java
Теперь, когда наш проект Maven работает, и мы решили наши зависимости, мы можем начать использовать Atlas MongoDB с Java.
Если вы импортировали пример набора данных, как предложено в сообщении в блоге Quick Start Atlas, то с кодом Java, который мы собираемся создать, вы сможете увидеть список баз данных в примере набора данных.
Первый шаг – экземпляр моноцветного вещества путем передачи строки подключения Atlas MongoDB в монгоклиенты.Create () статический метод. Это установит соединение с Atlas MongoDB с помощью строки подключения. Затем мы можем получить список баз данных в этом кластере и распечатать их, чтобы проверить соединение с MongoDB.
В src/main/java/com/mongodb создайте соединение.Файл Java:
Как видите, строка соединения MongoDB извлекается из Свойства системы , Итак, нам нужно настроить это. После того, как вы получите строку подключения ATLAS MongoDB, вы можете добавить MongoDB.Свойство системы URI в свою IDE. Вот моя конфигурация с IntelliJ, например,.
Или, если вы предпочитаете использовать Maven в командной строке, вот эквивалентная командная строка, которую вы можете запустить в корневом каталоге:
Примечание: не забудьте двойные цитаты вокруг Mongodb URI, чтобы избежать сюрпризов от вашей оболочки.
Стандартный выход должен выглядеть так:
Вставьте операции
Настройка
В разделе «Соединение с Java» мы создали классы Hellomongodb и Connection . Теперь мы будем работать над классом Create.
Если вы не настроили бесплатный кластер на Mongodb Atlas, сейчас самое время сделать это. Получите указания для создания кластера .
Проверка модели сбора и данных
В примере набора данных вы можете найти образец базы данных, который содержит оценки коллекции . Каждый документ в этой коллекции представляет оценки студента для конкретного класса.
Вот представление о документе JSON в оболочке Mongo .
И вот расширенное представление JSON того же студента. Вы можете получить его в MongoDB Compass, наш бесплатный инструмент GUI, если хотите.
Расширенный JSON – это человеческая читаемая версия документа BSON без потери информации о типе. Вы можете прочитать больше о Java Driver и Bson в документации Mongodb Java Driver .
Как вы можете видеть, MongoDB хранит документы BSON, и для каждой пары клавиш значений BSON содержит ключ и значение вместе с типом. Вот как MongoDB знает, что class_id на самом деле является двойным, а не целым числом, которое не является ясным в представлении оболочки Mongo в этом документе.
У нас уже есть 10 000 студентов (студент с 0 до 9999) уже в этой коллекции, и каждый из них занял 10 различных классов, что составляет до 100 000 документов в этой коллекции. Допустим, новый студент (студент 10 000) только что прибыл в этот университет и получил кучу (случайных) оценок в своем первом классе. Давайте вставим этот новый студенческий документ, используя Java и Mongodb Java Driver.
В этом университете Class_ID варьируется от 0 до 500, поэтому я могу использовать любое случайное значение от 0 до 500.
MongoDB Java Интеграция: 12 простых шагов
Начните с операциями MongoDB CRUD в Python: 3 простых шагов Агрегация подстроения MongoDB (субстрата): упрощенная 101 Разъем MongoDB JavaScript (NodeJS) упрощен 101
Оглавление
Эта страница содержит всесторонний обзор того, как вы можете начать с MongoDB и Java. В этом посте вы’LL научитесь подключить приложение Java к экземпляру MongoDB. Тогда вы будете выполнять некоторые общие операции MongoDB, используя водитель MongoDB Java. Читайте вместе, чтобы настроить свой Mongodb Java Интеграция сегодня!
Оглавление
Что такое mongodb?
MongoDB-это база данных документов с открытым исходным кодом, которая имеет широкий спектр приложений. Его можно использовать в качестве аналитической базы данных, транзакционной базы данных, индекса поиска или хранилища данных, среди других вариантов использования. MongoDB имеет гибкую схему, которая обеспечивает поддержку полной индексации, репликации, хранения JSON и неструктурированного языка запросов.
Ключевые концепции MongoDB:
- Идентификатор: Идентификатор – это имя поля, которое используется для представления уникального объекта в MongoDB. Он может быть явно создан пользователем или неявно на сервере MongoDB.
- Коллекция: Это ведро, которое хранит группу документов MongoDB. Он подпадает под базу данных в иерархии.
- База данных: Это самый верхний уровень организации данных в экземпляре MongoDB. База данных сохраняет коллекции и экземпляр MongoDB может содержать много баз данных.
- Документ: Записи, хранящиеся в коллекции MongoDB, называются документами. Они содержат ключи и значения. Значения могут быть строками, целыми числами, логинами, датами, а также другими встроенными документами.
- Поле: это относится к паре ключа/значения в документе.
Решите ваши проблемы с репликацией данных с надежными, бесконечными, автоматизированными трубопроводами Hevo.
Ключевые особенности MongoDB
MongoDB имеет несколько необычных возможностей, которые делают его широко полезным и популярным. Давайте посмотрим на главные технические функции Mongodb:
Поддерживает запросы Adhoc
Одним из самых больших преимуществ, которые выделяют MongoDB, является его производительность при обработке специальных запросов на данные, которые обычно обновляются в режиме реального времени. MongoDB может выполнять поиск в полевых условиях, поиск в диапазоне, а также запросы регулярного выражения.
Индексация
Индексация является важной особенностью базы данных для улучшения скорости поиска и производительности поисковых запросов. Без индексации база данных была бы вынуждена сканировать документы один за другим, чтобы выбрать те, которые соответствуют запросу, который был бы неэффективным. Однако, если каждый запрос имеет соответствующий индекс, запросы пользователей могут быть быстро выполнены сервером. При индексации MongoDB возможна с любым поле или ключом, в документе, поддерживающем сложные шаблоны доступа к наборам данных.
Бесплатная база данных
Классические реляционные базы данных Используйте схему для определения каждого функционального элемента, включая таблицы, виды строк, индексы и отношения. В MongoDB одна коллекция поддерживает разные документы. У него нет схемы, поэтому в коллекции может быть многочисленные документы, имеющие различные ключи, и эти ключи могут быть уникальными. База данных схемы, как и MongoDB, более гибкая, поскольку она не несет этих ограничений с предварительными фондами, отображая в более естественную базу данных.
Чтобы узнать больше о MongoDB, посетите здесь.
Что такое Java?
Java – это популярный язык программирования, который’S в основном используется для разработки на стороне сервера, а также для разработки мобильных приложений. В своем дизайне Java-это объектно-ориентированный язык, который просто означает, что все данные и методы представлены как классы и объекты.
Java может быть составлена или интерпретирована, что означает, что перевод кода Java в Bytecode или двоичный формат может быть сделан с помощью компилятора или интерпретатора. С тех пор’скомпилированный язык, это’S очень быстро во время выполнения, а также очень легко отлаживать.
Некоторые лучшие варианты использования Java включают разработку:
- Android -приложения
- Приложения для настольного графического интерфейса
- Веб -приложения
- Научные приложения
- Приложения на стороне сервера финансового сектора
- Встроенные системы
Ключевые особенности Java
Следующие функции дают Java преимущество над другими языками программирования:
- Объектно-ориентированный: Язык программирования Java рассматривает все как объект. Он может легко составить сценарии реального мира в код, рассматривая отдельные объекты как объекты.
- Независимая платформа: В отличие от языков программирования, как C и C ++, Java не составлена в машине для конкретной платформы. Он производит код, независимый от платформы, который распределен по Интернету и интерпретируется виртуальной машиной Java (JVM), установленной в любой системе.
- Безопасность: С помощью функции безопасности языка программирования Java это позволяет разработать системы защиты от защиты и вируса. Кроме того, он использует методы аутентификации на основе криптографии, чтобы обеспечить безопасность вашего кода и данных.
- Портативный: Java-это независимый от архитектуры язык программирования. Таким образом, легко перенести код, написанный на языке программирования Java на разные процессоры.
- Крепкий: Java-это язык программирования, который стремится устранить экземпляры, подверженные ошибкам, используя проверку ошибок и проверки времени выполнения.
Чтобы узнать больше о языке программирования Java, посетите здесь.
Упростите анализ данных с помощью не-кодного конвейера HEVO
Данные HEVO, автоматизированный трубопровод данных без код помогает загружать данные из любого источника данных, такого как базы данных, приложения SAAS, облачное хранилище, SDK, S и потоковые службы, и упрощает процесс ETL. Он поддерживает более 100 источников данных, таких как Mongodb и загружает данные в желаемое хранилище данных, обогащает данные и преобразует их в готовую форму, не написав ни одной строки кода.
Его полностью автоматизированный трубопровод предлагает данные для доставки в режиме реального времени без потерь от источника до назначения. Его отказоустойчивый и масштабируемая архитектура убедитесь, что данные обрабатываются безопасным, согласованным образом с нулевой потерей данных и поддерживают различные формы данных. Предоставленные решения являются последовательными и работают с различными инструментами бизнес -аналитики (BI), а также.
Посмотрите, почему Hevo – это BESТ:
- Безопасный: Hevo имеет сдержанную архитектуру, которая гарантирует, что данные обрабатываются безопасным, последовательным образом с нулевой потерей данных.
- Управление схемами: HEVO забирает утомительную задачу управления схемами и автоматически обнаруживает схему входящих данных и отображает ее на схему назначения.
- Минимальное обучение: HEVO с его простым и интерактивным пользовательским интерфейсом очень прост для новых клиентов, чтобы работать и выполнять операции.
- HEVO построен для масштабирования: По мере роста количества источников и объема ваших данных HEVO масштабируется горизонтально, обрабатывая миллионы записей в минуту с очень небольшим количеством задержки.
- Польшемная нагрузка данных: HEVO позволяет передавать данные, которые были изменены в режиме реального времени. Это обеспечивает эффективное использование полосы пропускания на обоих концах.
- Живая поддержка: Команда HEVO доступна круглосуточно, чтобы продлить исключительную поддержку своим клиентам через чат, электронную почту и поддержку звонков.
- Живой мониторинг: HEVO позволяет отслеживать поток данных и проверять, где ваши данные находятся в определенном моменте времени.
Каковы шаги для установки интеграции MongoDB Java?
Надеемся, что к настоящему времени вы приобрели базовое понимание MongoDB и Java, а также почему они’RE используется в разработке приложений. Теперь пусть’Погрузитесь и посмотрите на шаги, используя, которые вы можете настроить Mongodb Java Интеграция:
- Шаг 1: Установите пакет OpenJDK
- Шаг 2: Установите переменную среды java_home
- Шаг 3: Установите MongoDB
- Шаг 4: Установите IDE или редактор
- Шаг 5: Настройка нового проекта Java
- Шаг 6: Установите клиентскую библиотеку MongoDB Java
- Шаг 7: Используйте клиентскую библиотеку MongoDB Java
- Шаг 8: Создайте коллекцию MongoDB
- Шаг 9: Создать документы
- Шаг 10: Запросные документы
- Шаг 11: Обновление документов
- Шаг 12: Удалить документы
Шаг 1: Установите пакет OpenJDK
Чтобы следовать за настройкой java mongodb, вы’Сначала нужно подготовить местную машину для разработки Java. Для этого вам нужно сначала установить пакет OpenJDK 8 (Open Java Development Kit).
1) Linux
Если вы’На Debian или Ubuntu откройте командную строку и запустите следующую команду:
$ sudo apt-get install openjdk-8-jdk
Для CentOS, Red Hat, Oracle, Fedora и других аналогичных дистрибутиваний Linux используйте следующую команду:
$ su -c "yum install java -1.8.0-openjdk-devel "
2) macOS
Если вы’re на macOS Используйте следующую команду:
% wrew install openjdk@8
Затем создайте символическую ссылку, чтобы обертка Java могла найти ее:
% sudo ln -sfn/usr/local/opt/openjdk@8/libexec/openjdk.JDK/Library/java/javavirtualtaChines/openjdk-8.JDK
3) окна
- Загрузите установщик на основе MSI по этой ссылке.
- Извлеките файлы ZIP в папку.
- Запустите OpenJDK 8 для установщика Windows.
- Следуйте подсказкам на экране для установки.
Шаг 2: Установите переменную среды java_home
Как только ваш JDK будет на месте, вам нужно установить среду Java, чтобы продолжить интеграцию MongoDB Java.
1) Linux
- Откройте свой терминал и тип:
sudo nano /etc /profile
- Затем перейдите к концу файла и введите:
Экспорт java_home =/usr/lib/jvm/java-8-openjdk-amd64/bin/java export path = $ java_home/bin: $ path
- Сохраните файл и выход (Ctrl+O, Ctrl+x).
2) macOS
- Откройте свой терминал и тип:
эмац .профиль
- Затем перейдите к концу файла и введите:
Java_home =/библиотека/java/home export java_home;
- Сохранить и выйти (Ctrl-X, Ctrl-S; Ctrl-X, Ctrl-C).
3) окна
Чтобы установить переменную среды на машине Windows, откройте командную строку с привилегиями администратора и запустите следующую команду:
setx -m java_home "c: progra ~ 1javajdk1.8.0_xx "
Далее перезапустите командную строку, чтобы перезагрузить переменные среды. Запустите следующую команду, чтобы проверить, был ли путь добавлен:
echo %java_home %
Шаг 3: Установите MongoDB
После того, как вы закончите с Java Part в интеграции MongoDB Java, пришло время установить MongoDB и его инструменты.
1) Linux
- Откройте терминал и выпустите следующую команду, чтобы импортировать открытый ключ MongoDB из системы управления пакетами:
wget -qo - https: // www.Mongodb.org/static/pgp/server-5.0.ASC | Sudo Apt-Key Add -
- Далее создайте файл списка, выпустив следующую команду:
echo "deb [arch = amd64, arm64] https: // Repo.Mongodb.org/apt/ubuntu focal/mongodb-org/5.0 мультиверсад "| sudo tee/etc/apt/источники.список.D/MongoDB-ORG-5.0.список
- Обновить базу данных пакетов.
Sudo Apt-Get обновление
- Запустите следующую команду для установки MongoDB:
sudo apt-get install -y mongodb-org
- Начать mongodb:
Sudo SystemCtl Start Mongod
- Убедитесь, что MongoDB работает:
Sudo SystemCtl Status mongod
MongoDB должен работать на порту 27017.
Приведенные выше инструкции были проверены на Ubuntu 20.0. Вы можете получить инструкции по установке для других распределений Linux по следующей ссылке.
2) macOS
- Выполните следующую команду, чтобы загрузить формулу Homebrew для MongoDB:
Brew Tap Mongodb/Brew
- Установите MongoDB, используя следующую команду:
Brew установить [email protected]
- Для компьютеров MacOS, работающих на процессорах Intel, запустите MongoDB, используя следующую команду:
Mongod -config/usr/local/etc/mongod.Conf -Fork
- Для компьютеров MacOS, запущенных процессоров M1, используйте следующую команду:
Mongod -config/opt/homebrew/etc/mongod.Conf -Fork
3) окна
- Загрузите установщик на основе MongoDB MSI по этой ссылке.
- Запустите установщик, дважды щелкнув .файл MSI.
- Следуйте подсказкам на экране для установки.
Шаг 4: Установите IDE или редактор
Чтобы запустить приведенные в этом блоге, мы рекомендуем использовать интегрированную среду разработки (IDE). Это потому, что вам намного удобнее настроить Maven или Gradle при создании и заведении Java Project.
Ниже вас’найду список некоторых популярных редакторов, используемых для разработки приложений Java, и подойдут вашим Mongodb Java Интеграция:
- Атом от GitHub
- Идея Intellij от Jetbrains
- Visual Studio Code от Microsoft
- Eclipse от Eclipse Foundation
Эти IDE предлагают полезные функции, такие как выделение синтаксиса, завершение кода, полностью интегрированные возможности отладки и многое другое.
Шаг 5: Настройка нового проекта Java
Используя вашу любимую IDE, создайте новый проект Maven или Gradle. Если вы’Использование Maven, вы должны получить следующую структуру папок:
Java-Quick-Start/.Xml â â â â € â â â € â â â â € â â
Если вы используете Gradle, у вас должна быть следующая структура папок:
â â €.Грэдл â â â â € â â € â â â € â â €
Шаг 6: Установите клиентскую библиотеку MongoDB для Java
Клиентская библиотека MongoDB для Java позволяет вам подключаться и общаться с вашим экземпляром MongoDB из приложения Java.
Если вы используете Maven, добавьте клиентскую библиотеку MongoDB Java в свой список зависимостей в вашем пома.XML файл.
орг.Mongodb MongoDB-Driver-Sync 4.4.1
Твой пома.XML Файл должен теперь выглядеть так:
4.0.0 компонент.Mongodb Java-Quick-Start 1.0-snapshot 8 8 UTF-8 4.4.1 3.10.0 орг.Mongodb MongoDB-Driver-Sync $ орг.апач.Мавен.плагины Maven-Compiler-Plugin $ $ $
Если вы’повторный использование Gradle, добавьте следующий фрагмент кода в свой строить.Градл Список зависимостей для вашей интеграции MongoDB Java:
зависимости
Твой строить.Градл Файл должен напоминать следующий файл:
плагины < id 'base' >Импорт орг.Градл.распределение.Скачать версию Gradgre = '0.1 'зависимости < compile 'org.mongodb:mongodb-driver-sync:4.4.1' >задания.Registry ('DownloadGradle, DownloadGradle) < description = 'Downloads the Gradle distribution with a given version.' gradleVersion = '4.6' >задания.Register ('createCustomGradeStribution', ZIP) < description = 'Builds custom Gradle distribution and bundles initialization scripts.' dependsOn downloadGradle def projectVersion = project.version archiveFileName = downloadGradle.gradleVersion.map < gradleVersion ->"Mycompany Gradle-$-$-bin.Zip "> от Ziptree (DownloadGradle.destinationfile) от ('src/init.D ') < into "$/init.d" > >
Шаг 7: Использование клиентской библиотеки MongoDB Java
Чтобы использовать клиентскую библиотеку MongoDB Java, создайте файл, который будет содержать ваше приложение в каталоге базовых пакетов вашего проекта. Вы можете назвать это Приложение.Джава.
Добавьте следующие импортные операторы для инициализации библиотеки:
импорт статический ком.Mongodb.клиент.модель.Фильтры.уравнение; Импорт орг.Бон.Документ; Импорт ком.Mongodb.клиент.Моноцкий; Импорт ком.Mongodb.клиент.Монгоклиенты; Импорт ком.Mongodb.клиент.Монгоколликция; Импорт ком.Mongodb.клиент.Монгодатабаза;
Шаг 8: Создайте коллекцию MongoDB
С этим с дороги, это’Сейчас время, когда ваша интеграция Java Java взаимодействует с базой данных. Позволять’S первый старт с создания коллекции. Вы можете создать коллекцию MongoDB, указав целевую базу данных, используя getDatabase () метод, а затем вызывая CreateCollection () Метод компонент.Mongodb.клиент.Монгодатабаза интерфейс. Этот метод принимает буквальное строковое значение с именем коллекции. Если база данных не существует, MongoDB создаст ее косвенно.
Следующий фрагмент кода создает коллекцию в базе данных MongoDB:
Импорт Java.утилит.Массивы; Импорт орг.Бон.Документ; Импорт орг.Бон.типы.ObjectId; Импорт ком.Mongodb.Монгоэкспений; Импорт ком.Mongodb.клиент.Моноцкий; Импорт ком.Mongodb.клиент.Монгоклиенты; Импорт ком.Mongodb.клиент.Монгоколликция; Импорт ком.Mongodb.клиент.Монгодатабаза; Импорт ком.Mongodb.клиент.результат.Insertoneresult; Общественный класс CreateCollection < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; // Create a MongoDB Client MongoClient mongoClient = MongoClients.create(uri)); // Create a MongoDB database MongoDatabase database = mongoClient.getDatabase("usersDB"); // Create a MongoDB Collection MongoCollectioncollection = database.createCollection("users"); System.out.println("Collection Created Successfully!"); > >
Шаг 9: Создать документы
В следующем фрагменте используется insertone () метод для вставки документа в пользователь’S Коллекция, которую вы создали на предыдущем шаге. Если база данных или коллекция не существует, MongoDB создаст оба.
Импорт Java.утилит.Массивы; Импорт орг.Бон.Документ; Импорт орг.Бон.типы.ObjectId; Импорт ком.Mongodb.Монгоэкспений; Импорт ком.Mongodb.клиент.Моноцкий; Импорт ком.Mongodb.клиент.Монгоклиенты; Импорт ком.Mongodb.клиент.Монгоколликция; Импорт ком.Mongodb.клиент.Монгодатабаза; Импорт ком.Mongodb.клиент.результат.Insertoneresult; Общедоступный класс < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); try < InsertOneResult result = collection.insertOne(new Document() .append("_id", new ObjectId()) .append("username", "vitali@30") .append("phonenumber", 2501345876) .append("email", "[email protected]) ); System.out.println("Success! Inserted document id: " + result.getInsertedId()); >поймать (MongoException Me) < System.err.println("Unable to insert due to an error: " + me); >>>>
Также можно вставить несколько документов в коллекцию за один раз, вызывая INSERTMANY () метод. Чтобы вставить несколько документов, вы должны добавить их в список и передать этот список в качестве массива. Следующий фрагмент кода показывает, как вы можете использовать INSERTMANY () метод для достижения этого.
Импорт Java.утилит.Массивы; Импорт Java.утилит.Список; Импорт орг.Бон.Документ; Импорт ком.Mongodb.Монгоэкспений; Импорт ком.Mongodb.клиент.Моноцкий; Импорт ком.Mongodb.клиент.Монгоклиенты; Импорт ком.Mongodb.клиент.Монгоколликция; Импорт ком.Mongodb.клиент.Монгодатабаза; Импорт ком.Mongodb.клиент.результат.Вставка матэнразита; Общедоступный класс вставка < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); List userList = Arrays.asList( new Document().append("username", "owen hart"), new Document().append("username", "jack grealish")); try < InsertManyResult result = collection.insertMany(userList); System.out.println("Inserted document ids: " + result.getInsertedIds()); >поймать (MongoException Me) < System.err.println("Unable to insert due to an error: " + me); >>>>
Шаг 10: Запросные документы
Работая с вашей интеграцией MongoDB Java, вы можете получить документы в коллекции, вызывая находить() метод. Этот метод возвращает итерабильный объект, который содержит все документы в коллекции:
Импорт ком.Mongodb.клиент.Найти; Импорт ком.Mongodb.клиент.Монгоколликция; Импорт ком.Mongodb.клиент.Монгодатабаза; Импорт Java.утилит.Итератор; Импорт орг.Бон.Документ; Импорт ком.Mongodb.Моноцкий; Общедоступный класс находка < public static void main( String[] args ) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); FindIterable iterDoc = collection.find(); Iterator it = iterDoc.iterator(); while (it.hasNext()) < System.out.println(doc.it.next()); >>>>
Шаг 11: Обновление документов
Обновления в базе данных MongoDB могут быть сделаны с помощью UpdateOne () Метод Обновления сорт. В следующем примере вы будете обновлять значение номера телефона и добавлять адрес в документ, который соответствует имени пользователя “Vitali@30”.
Импорт орг.Бон.Документ; Импорт орг.Бон.конверсии.Bson; Импорт ком.Mongodb.Монгоэкспений; Импорт ком.Mongodb.клиент.Моноцкий; Импорт ком.Mongodb.клиент.Монгоклиенты; Импорт ком.Mongodb.клиент.Монгоколликция; Импорт ком.Mongodb.клиент.Монгодатабаза; Импорт ком.Mongodb.клиент.модель.UpdateOptions; Импорт ком.Mongodb.клиент.модель.Обновления; Импорт ком.Mongodb.клиент.результат.UpdaterSult; Общественный класс UpdateOne < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); Document query = new Document().append("username", "vitali@30"); Bson updates = Updates.combine( Updates.set("phonenumber", 010154257), Updates.addToSet("address", "666, 5th Avenue, NYC")); UpdateOptions options = new UpdateOptions().upsert(true); try < UpdateResult result = collection.updateOne(query, updates, options); System.out.println("Modified document count: " + result.getModifiedCount()); System.out.println("Upserted id: " + result.getUpsertedId()); // only contains a value when an upsert is performed >поймать (MongoException Me) < System.err.println("Unable to update due to an error: " + me); >>>>
Шаг 12: Удалить документы
После установки интеграции MongoDB Java вы все равно можете выполнить операцию удаления в документе в монгодбколении, используя deleteone () метод. Метод принимает фильтр запросов, который соответствует документу, который вы хотите удалить.
Следующий фрагмент кода удалит одного пользователя с помощью EQ () Фильтр, чтобы идентифицировать конкретного пользователя с именем пользователя “Vitali@30” от вашей интеграции Java MongoDB:
импорт статический ком.Mongodb.клиент.модель.Фильтры.уравнение; Импорт орг.Бон.Документ; Импорт орг.Бон.конверсии.Bson; Импорт ком.Mongodb.Монгоэкспений; Импорт ком.Mongodb.клиент.Моноцкий; Импорт ком.Mongodb.клиент.Монгоклиенты; Импорт ком.Mongodb.клиент.Монгоколликция; Импорт ком.Mongodb.клиент.Монгодатабаза; Импорт ком.Mongodb.клиент.результат.DeleterESult; Общедоступный класс deleteone < public static void main(String[] args) < String uri = "mongodb://localhost:27017"; try (MongoClient mongoClient = MongoClients.create(uri)) < MongoDatabase database = mongoClient.getDatabase("usersDB"); MongoCollectioncollection = database.getCollection("users"); Bson query = eq("username", "vitali@30"); try < DeleteResult result = collection.deleteOne(query); System.out.println("Deleted document count: " + result.getDeletedCount()); >поймать (MongoException Me) < System.err.println("Unable to delete due to an error: " + me); >>>>
Что’сидеть! Теперь вы можете настроить свой собственный Mongodb Java интеграция.
Заключение
Эта статья познакомила вас с языком программирования MongoDB и Java вместе с их ключевыми особенностями. Если вы успешно завершили это руководство, у вас должно быть хорошее представление о том, как настроить Mongodb Java интеграция. Вы рассмотрели шаги, необходимые для настройки средств разработки MongoDB и Java на вашем ПК или сервере. Вы также рассмотрели, как использовать драйвер Java для подключения к экземпляру MongoDB. Наконец, вы видели примеры того, как написать несколько простых операций Mongodb Java Crud.
MongoDB – отличный инструмент для хранения ваших бизнес -данных. Однако иногда вам необходимо перенести эти данные в хранилище данных для дальнейшего анализа. Создание собственного решения для этого процесса может быть дорогой и трудоемкой задачей. Данные HEVO, с другой стороны, предлагают беспроводной конвейер данных, который может автоматизировать ваш процесс передачи данных, что позволяет вам сосредоточиться на других аспектах вашего бизнеса, таких как аналитика, управление клиентами и т. Д. Эта платформа позволяет передавать данные из 100+ источников, таких как Mongodb к облачным хранилищам данных, таким как Snowflake, Google BigQuery, Amazon Redshift и т. Д. Это предоставит вам беспрепятственный опыт и значительно облегчит работу рабочей жизни.
Хочу взять Хево за вращением? Подпишитесь на 14-дневную бесплатную пробную версию и испытайте богатый функциями Hevo Suite из первых рук.
Поделитесь своими взглядами на Mongodb Java Интеграция в раздел комментариев!
Java MongoDB Транзакции: создание, управление и рабочие процессы упрощенные | 101 РУКОВОДСТВО
Обработка баз данных и выполнение нескольких операций на данных может быть сложной задачей. Системы управления базами данных были введены для решения управления и рабочих проблем собравшихся данных. Одна из самых популярных баз данных – MongoDB. MongoDB – одна из самых гибких баз данных, и запуск с Java делает его еще быстрее и проще.
Оглавление
В этой статье вы узнаете о транзакциях Java MongoDB. И далее, мы обсудим, как создавать, управлять и работать с транзакциями MongoDB.
Оглавление
- Предварительные условия
- Что такое mongodb?
- Как запустить mongodb с Java?
- Что такое транзакция MongoDB?
- Создание транзакций Java MongoDB
- Управление транзакциями Java MongoDB
- Рабочий процесс транзакций Java MongoDB
- Заключение
Предварительные условия
Основное понимание баз данных.
Что такое mongodb?
MongoDB – это база данных NOSQL, которая принципиально отличается от баз данных SQL. MongoDB-это нереляционная база данных, независимая от открытого исходного кода, платформу, и на основе документов. Базы данных SQL сохраняет связанные данные в таблицах, тогда как MongoDB занимается не связанными данными.
MongoDB поддерживает транзакции кислотных (атомичность, консистенция, изоляция и долговечность) в отдельных или нескольких документах. Эти кислотные свойства транзакций гарантируют, что сложные операции транзакций являются безопасными и надежными, гарантируя достоверность данных. MongoDB представил несколько документов, коллекций и баз данных кислотных транзакций в MongoDB 4.0 версия.
MongoDB работает на стандартных операционных системах, Windows, Linux, MacOS и Cloud. MongoDB Edition, которое работает в операционной системе, является сервером сообщества MongoDB, а установка MongoDB на облаке называется MongoDB Atlas.
Как запустить mongodb с Java?
Установите Java в вашу систему, и готовые к вашей предпочтительной интегрированной среде разработки (IDE). Чтобы настроить Java и Mongodb, во -первых, вы должны получить водитель Jangodb Java. Ресурсы для установки MongoDB будут забраны двумя IDE либо в Gradle, либо в Maven. Драйверы MongoDB Java обеспечивают как синхронное, так и асинхронное взаимодействие.
Шаги, чтобы получить водитель java mongodb
- Установите правильную версию драйвера MongoDB с этого сайта. Затем перейдите к продуктам из значка меню. Найди ‘ДАННЫЕ ПРЕДВАРИТЕЛЬНЫЕ’ опция и нажмите на него.
- Вы перенаправляете на другую веб -страницу, где вы можете найти ‘Подключение данных’ Опция на панели обзора, под которой вы увидите JDBC. Нажмите здесь.
- Откроется другая страница. Поиск MongoDB из списка и нажмите на него, чтобы двигаться дальше.
- Появится новая страница, где вы увидите опцию загрузки. Нажмите на него, и тогда у вас будет два варианта; Windows и Linux. Согласно вашей системе ОС, нажмите на нее, чтобы загрузить.
- Вы должны заполнить форму для скачивания и нажать скачать.
- После загрузки извлеките загруженный файл.
- Откройте извлеченный файл, чтобы запустить установку. Нажмите на ‘Следующий’ продолжать.
- Принять все условия, затем двигаться вперед, нажав дальше.
- ПРИМЕЧАНИЕ. Не меняйте ничего в предстоящих двух окнах. Нажмите дальше, чтобы продолжить.
- Наконец, вы достигнете опции установки. Нажмите на него, и установка начнется.
- Дождитесь завершения процесса установки.
- Когда установка завершена, нажмите «Готово», чтобы закончить установку.
- Откройте свой диск C и следуйте по пути ниже. Если вы найдете папку JDBC, установка успешна.
Указывать интеграцию данных без усилий с HEVO’S Unful-Reterant No Code Data Pipeline
Поскольку способность бизнеса собирать данные взрывается, команды данных играют решающую роль в разжигании решений, основанных на данных. Тем не менее, они изо всех сил пытаются консолидировать разбросанные данные на своем складе, чтобы построить один источник истины. Сломанные трубопроводы, проблемы с качеством данных, ошибки и ошибки, а также отсутствие контроля и видимости по потоку данных делают интеграцию данных кошмаром.
1000+ команд данных полагаются на HEVO’S Pipeline Data Pipeline Platform для интеграции данных из более чем 150+ источников за считанные минуты. Миллиарды событий данных из источников, таких как различные приложения SaaS, базы данных, хранилище файлов и источники потокового веща’S Панная устойчивая архитектура. Что’S больше-HEVO ставит полный контроль в руках групп данных с интуитивно понятными инструментальными панелями для мониторинга трубопроводов, управления автоматической схемой и графиков индивидуального приема/загрузки/загрузки.
Это, в сочетании с прозрачными ценами и поддержкой 24 × 7, делает нас наиболее специальным программным обеспечением для конвейера данных на сайтах обзора.
Возьмите нашу 14-дневную бесплатную пробную версию, чтобы получить лучший способ управления трубопроводами данных.
Что такое транзакция MongoDB?
Транзакция в MongoDB – это логическая группа процессов, которые выполняют одну или несколько операций по нескольким документам. Транзакция обеспечивает способ группировать и изолировать несколько операторов и обрабатывать их как единую операцию.
Вместо того, чтобы выполнять кучу команд индивидуально, вы можете использовать транзакции для объединения и выполнения команд в другом контексте.
Эти операции в транзакциях представляют собой операции с множественной чтением и записи, выполняемые в базу данных MongoDB и из. Транзакции сохраняют целостность набора операций и обеспечивают прочную согласованность данных конечному пользователю.
Транзакции в MongoDB обладают кислотными свойствами. Эти свойства гарантируют, что сложные операции являются безопасными и надежными. MongoDB поддерживает многодокумент и распределенный многодокумент.
Создание транзакций Java MongoDB
Транзакции могут быть выполнены только в базах данных, которые работают как часть большого кластера. Этот кластер может быть либо ловким кластером базы данных, либо набором копий. Обычно транзакции MongoDB записываются и выполняются из внешних приложений с помощью методов API. Мы тут’LL создать транзакцию, используя оболочку MongoDB.
Примечание: После начального метода StartTransaction () операция автоматически прерван бы, если сеанс транзакции работает более 60 секунд.
Ниже приведены шаги по концептуализации сеанса транзакции от начала до конца.
дБ.авторы.находить() [ < _id: ObjectId("620397dd4b871fc65c193106"), first_name: 'James', last_name: 'Joyce', title: 'Ulysses' >, < _id: ObjectId("620398016ed0bb9e23785973"), first_name: 'William', last_name: 'Gibson', title: 'Neuromancer' >, < _id: ObjectId("6203981d6ed0bb9e23785974"), first_name: 'George', last_name: 'Orwell', title: 'Homage to Catalonia' >, < _id: ObjectId("620398516ed0bb9e23785975"), first_name: 'James', last_name: 'Baldwin', title: 'The Fire Next Time' >]
То же самое с API, вы создаете сеанс транзакции, используя код:
var session = db.getmongo ().Starting ()
Следующим шагом является начало транзакции, вызывая метод StartTransaction (). Используйте приведенное ниже команду:
сессия.StartTransaction ( < "readConcern": < "level": "snapshot" >, "WriteConcern": < "w": "majority >>)
Существует два варианта метода StartTransaction (): прочитайте беспокойство и напишите озабоченность.
Набор проблем с чтением игнорируется внутри транзакции на уровне сбора и базы данных. Поэтому вы должны установить задачу на уровне транзакции на начальном процессе (). Тем не менее, чтение проблем по умолчанию входит в заинтересованность в транзакции на уровне сеанса.
Если задание чтения на уровне транзакций и на уровне сеанса не установлено, то задачи чтения на уровне клиента устанавливаются автоматически. Заинтересованность на уровне клиента ‘местный’ для чтения против основного.
Запись о записи используется для совершения операций записи. Операции записи внутри транзакций должны быть выпущены неявно, определяя озабоченность записи. Операции записи затем совершаются с использованием проблемы записи на уровне транзакции.
Вы можете установить беспокойство на уровне транзакции в StartTransaction (). Если задача записи на уровне транзакции не установлена, это по умолчанию по умолчанию на уровне сеанса Запись о коммите. Если проблемы с написанием на уровне транзакций и на уровне сеанса не являются, вызов уровня транзакции автоматически относится к проблеме записи на уровне клиента.
Управление транзакциями Java MongoDB
Управление всеми транзакциями может быть огромной работой, но вот несколько способов управления транзакциями. Вы можете добавить поддержку транзакций, используя данные Java Spring и драйверы Java Mongo. API водителя делает это:
Попробуйте (клиентская сеанс = клиент.Starting ()) < session.startTransaction(); try < collection.insertOne(session, documentOne); collection.insertOne(session, documentTwo); session.commitTransaction(); >Поймать (исключение E) < session.abortTransaction(); >>
Сессии клиента, полученные от клиента.StartingSession () должен быть недолговечным и выпущенным одновременно, когда больше не нужно. Таким образом, обеспечить включение команды Close ().
Приведенный выше фрагмент содержит сеанс (LSID) в каждой командной строке. ‘Начальное транзакция’ отправляется с первой командой, представляющей транзакцию. И после завершения транзакции совершается путем отправки ‘Committranscation.’
Предыдущие версии MongoDB не поддерживали транзакции, поэтому важной частью является настройка MongoTransactionManager в вашем приложении. Диспетчер транзакций является точкой входа для поддержки транзакций на основе аннотаций. Для конфигурации используйте приведенный ниже код:
@Configuration Class Config Extains AbstractMongoConfiguration < @Bean MongoTransactionManager transactionManager(MongoDbFactory dbFactory) < return new MongoTransactionManager(dbFactory); >> @Service Class DocumenterService < private final MongoOperations operations; DocumentService(MongoOperations operations) < this.operations = operations; >@Transactional void insertdocuments () < operations.insert(documentOne); operations.insert(documentTwo); >>
Что’сидеть. Не так много для управления транзакциями Java MongoDB, поэтому есть несколько простых шагов, чтобы изучить.
Рабочий процесс транзакций Java MongoDB
На первом этапе использования транзакции вам нужно запустить сеанс MongoDB через драйвер. Эта статья следует за сеансом MongoDB с водителем MongoDB Java. Затем используйте этот сеанс для выполнения группы операций базы данных. Вы можете запустить любые операции CRUD (создавать, читать, обновить и удалять) по нескольким документам, коллекциям и осколкам.
Mongodb’S Транзакции имеют происхождение однопийного узла, даже в контексте одного осколка. Его двигатель для хранения и протокол репликации заменяется для пути транзакций. Ниже приведена цифра, представляющая приложение для электронной коммерции с 2 клиентами MongoDB.
Здесь клиент 1 выполняет транзакции, а клиент 2 считывает запись, обновленную транзакцией, вызванной клиентом 1. Клиент 1 вставляет новый заказ в сбору заказов и обновляет акции упорядоченного предмета (при условии успешного отправки заказа). Теперь единственное, что касается записи, подходящей для высокой долговечности данных, – это большинство. Большинство означает большинство копий, я.эн., Большинство копий должны совершить изменения, прежде чем первичные признают успех записи клиенту.
Транзакция будет заблокирована до тех пор, пока не по крайней мере одно или два вторичных извлечет обновление с первичной, используя репликацию. Этот процесс делает mongodb’S Одиночная транзакция пишет немного медленнее, чем другие транзакционные nosqls.
Заключение
Мы прошли через использование MongoDB на Java и транзакции’S Creation, Management и Workflow. Использование транзакций Java MongoDB в базах данных гарантирует, что база данных будет иметь согласованное состояние после работы группы операций.
MongoDB принял работу транзакций из наиболее знакомых транзакционных паттернов, реализованных в MySQL, Oracle и других кислотных реляционных базах данных. По иронии судьбы, функция моделирования данных MongoDB для связанных данных, которые будут храниться вместе в одном документе, использует модель документа, не требующая многодокументных транзакций. Но разработчики восхищаются гибкостью в моделировании своих данных. Таким образом, существует функция транзакций в MongoDB.
Данные HEVO, трубопровод данных без кода, могут беспрепятственно передавать данные из обширного моря из 100+ источников, таких как MongoDB и Mongodb Atlas в хранилище данных или пункт назначения по вашему выбору, который будет визуализироваться в инструменте BI. Это надежный, полностью автоматизированный и надежный сервис, который не дает’Т требуется, чтобы вы написали любой код!
Если вы используете MongoDB в качестве системы управления базами данных NOSQL и поиск альтернативы без суеты ручной интеграции данных, тогда HEVO может легко автоматизировать это для вас. HEVO, с его сильной интеграцией с 100+ источниками и инструментами BI (В том числе более 40 бесплатных источников), позволяет вам не только экспортировать и загружать данные, но и преобразовать и обогатить ваши данные и сделать их готовыми к анализу в Jiffy.
Хочу взять Хево для поездки? Подпишитесь на 14-дневная бесплатная пробная версия и упростите процесс интеграции данных. Проверьте детали цен, чтобы понять, какой план удовлетворяет все потребности вашего бизнеса.
Расскажите нам о своем опыте изучения Java Mongodb Transaction! Поделитесь своими мыслями с нами в разделе комментариев ниже.