Быстро начните работу с MongoDB, просто освойте их!

Java MongoDB
Быстро начните работу с MongoDB, просто освойте их!

Адрес фактического центра электронной коммерции SpringBoot (30k+star):GitHub.com/macro-positive/…

Резюме

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

Введение

MongoDB — это база данных, основанная на распределенном хранилище файлов. Написанный на языке C++, он предназначен для предоставления масштабируемых высокопроизводительных решений для хранения данных для веб-приложений. MongoDB — это продукт между реляционными и нереляционными базами данных, наиболее многофункциональный и наиболее похожий на реляционные базы данных среди нереляционных баз данных.

Установить

Учебное пособие по установке MongoDB, написанное ранее, основано на версии 3.2. Я обнаружил, что у некоторых друзей возникают проблемы с установкой новой версии. На этот раз мы используем последнюю версию, чтобы установить ее снова. В этой статье используется версия MongoDB 4.2.5. В целом , новая версия Установка версии проще.

Установка под Windows

  • Загрузите установочный пакет MongoDB и выберитеWindows x64Установка версии, адрес загрузки:Woohoo. Mongodb.com/download-testing...

  • Запустите установочный пакет MongoDB, выберите выборочную установку и укажите путь установки;

  • Настройте MongoDB, запустите MongoDB как службу и настройте каталог данных и каталог журналов;

  • Отменить вариант установки MongoDB Compass (не отменять установку крайне медленно), нужно установить самостоятельно;

  • двойной щелчокmongo.exeВы можете запустить собственный клиент MongoDB для работы с MongoDB;

  • После успешного подключения отобразится следующая информация;

  • Если вам нужно удалить службу MongoDB, просто запустите ее с правами администратора.cmdинструмент и введите следующую команду.
sc.exe delete MongoDB

Установка под линукс

  • Загрузите Docker-образ MongoDB;
docker pull mongo:4.2.5
  • Запустите службу MongoDB с помощью команды Docker;
docker run -p 27017:27017 --name mongo \
-v /mydata/mongo/db:/data/db \
-d mongo:4.2.5
  • Иногда нам нужно настроить учетную запись для MongoDB, которую можно запустить с помощью следующей команды;
docker run -p 27017:27017 --name mongo \
-v /mydata/mongo/db:/data/db \
-d mongo:4.2.5 --auth
  • Затем нам нужно попасть в клиент MongoDB в контейнере;
docker exec -it mongo mongo
  • позжеadminСоздайте учетную запись в коллекции для подключения, которая создается здесь на основеrootУчетная запись суперадминистратора роли;
use admin
db.createUser({ 
    user: 'mongoadmin', 
    pwd: 'secret', 
    roles: [ { role: "root", db: "admin" } ] });
  • После завершения создания проверьте, можете ли вы войти в систему;
db.auth("mongoadmin","secret")
  • Весь процесс создания учетной записи можно посмотреть на следующем рисунке.

Клиентские инструменты

Существует много клиентских инструментов для MongoDB, и MongoDB Compass, который не устанавливается выше, является одним из них.Кроме того, версия Navicat 15 также имеет функцию управления MongoDB. Здесь мы используем бесплатный клиентский инструмент Robo 3T (ранее называвшийся Robomongo).

  • Сначала загрузите клиентский инструмент, адрес загрузки:robomongo.org/download

  • После завершения загрузки разархивируйте его и дважды щелкнитеrobo3t.exeготовые к использованию;

  • Затем создайте подключение к MongoDB;

  • После успешного создания соединения вы можете работать с MongoDB.

Связанные концепции

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

Концепции SQL Концепции MongoDB объяснять
database database база данных
table collection Таблица/коллекция базы данных
row document Строка записи данных/документ
column field поле данных/домен
index index показатель
primary key primary key Первичный ключ, MongoDB автоматически устанавливает поле _id в качестве первичного ключа

операции с базой данных

  • Создайте базу данных с помощьюuseкоманда для создания базы данных, база данных будет создана при вставке первого фрагмента данных, например при созданииtestбаза данных;
> use test
switched to db test
> db.article.insert({name:"MongoDB 教程"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
test    0.000GB
  • Чтобы удалить базу данных, используйте объект db вdropDatabase()метод удаления;
> db.dropDatabase()
{ "dropped" : "test", "ok" : 1 }
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

Операции по сбору

  • Чтобы создать коллекцию, используйте объект db вcreateCollection()методы создания коллекций, такие как созданиеarticleсобирать;
> use test
switched to db test
> db.createCollection("article")
{ "ok" : 1 }
> show collections
article
  • Чтобы удалить коллекцию, используйте объект коллекцииdrop()метод для удаления коллекции, например, для удаленияarticleсобирать;
> db.article.drop()
true
> show collections

манипулирование документами

Описанные выше операции с базой данных и коллекцией выполняются в клиенте MongoDB, а следующие операции с документами выполняются в Robomongo.

Вставить документ

  • MongoDB через объект коллекцииinsert()Метод вставляет документ в коллекцию, синтаксис следующий;
db.collection.insert(document)
  • Использование объекта коллекцииinsert()способ вставки документа, например вставкаarticleдокументация;
db.article.insert({title: 'MongoDB 教程', 
    description: 'MongoDB 是一个 Nosql 数据库',
    by: 'Andy',
    url: 'https://www.mongodb.com/',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})
  • Использование объекта коллекцииfind()методы получения документов, такие как получение всехarticleдокументация;
db.article.find({})
{
    "_id" : ObjectId("5e9943661379a112845e4056"),
    "title" : "MongoDB 教程",
    "description" : "MongoDB 是一个 Nosql 数据库",
    "by" : "Andy",
    "url" : "https://www.mongodb.com/",
    "tags" : [ 
        "mongodb", 
        "database", 
        "NoSQL"
    ],
    "likes" : 100.0
}

обновить документацию

  • MongoDB через объект коллекцииupdate()Для обновления документов в коллекции используется следующий синтаксис;
db.collection.update(
   <query>,
   <update>,
   {
     multi: <boolean>
   }
)
# query:修改的查询条件,类似于SQL中的WHERE部分
# update:更新属性的操作符,类似与SQL中的SET部分
# multi:设置为true时会更新所有符合条件的文档,默认为false只更新找到的第一条
  • установить заголовок наMongoDB 教程Название всех документов изменено наMongoDB;
db.article.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
  • Кромеupdate()кроме метода,save()Методы можно использовать для замены существующих документов, синтаксис следующий;
db.collection.save(document)
  • На этот раз мы устанавливаем ObjectId как5e9943661379a112845e4056Название документа изменено наMongoDB 教程;
db.article.save({
    "_id" : ObjectId("5e9943661379a112845e4056"),
    "title" : "MongoDB 教程",
    "description" : "MongoDB 是一个 Nosql 数据库",
    "by" : "Andy",
    "url" : "https://www.mongodb.com/",
    "tags" : [ 
        "mongodb", 
        "database", 
        "NoSQL"
    ],
    "likes" : 100.0
})

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

  • MongoDB через объект коллекцииremove()способ удаления документов в коллекции, синтаксис следующий;
db.collection.remove(
   <query>,
   {
     justOne: <boolean>
   }
)
# query:删除的查询条件,类似于SQL中的WHERE部分
# justOne:设置为true只删除一条记录,默认为false删除所有记录
  • удалить заголовок какMongoDB 教程все документы;
db.article.remove({'title':'MongoDB 教程'})

документ запроса

  • MongoDB через объект коллекцииfind()метод запроса документов, синтаксис выглядит следующим образом;
db.collection.find(query, projection)
# query:查询条件,类似于SQL中的WHERE部分
# projection:可选,使用投影操作符指定返回的键
  • Запросarticleвсе документы в коллекции;
db.article.find()
/* 1 */
{
    "_id" : ObjectId("5e994dcb1379a112845e4057"),
    "title" : "MongoDB 教程",
    "description" : "MongoDB 是一个 Nosql 数据库",
    "by" : "Andy",
    "url" : "https://www.mongodb.com/",
    "tags" : [ 
        "mongodb", 
        "database", 
        "NoSQL"
    ],
    "likes" : 50.0
}

/* 2 */
{
    "_id" : ObjectId("5e994df51379a112845e4058"),
    "title" : "Elasticsearch 教程",
    "description" : "Elasticsearch 是一个搜索引擎",
    "by" : "Ruby",
    "url" : "https://www.elastic.co/cn/",
    "tags" : [ 
        "elasticearch", 
        "database", 
        "NoSQL"
    ],
    "likes" : 100.0
}

/* 3 */
{
    "_id" : ObjectId("5e994e111379a112845e4059"),
    "title" : "Redis 教程",
    "description" : "Redis 是一个key-value数据库",
    "by" : "Andy",
    "url" : "https://redis.io/",
    "tags" : [ 
        "redis", 
        "database", 
        "NoSQL"
    ],
    "likes" : 150.0
}
  • Условные операторы в MongoDB можно понять, сравнив их с операторами SQL;
действовать Формат Аналогичный оператор в SQL
равный {<key>:<value>} where title = 'MongoDB 教程'
меньше, чем {<key>:{$lt:<value>}} where likes < 50
меньше или равно {<key>:{$lte:<value>}} where likes <= 50
больше, чем {<key>:{$gt:<value>}} where likes > 50
больше или равно {<key>:{$gte:<value>}} where likes >= 50
не равно {<key>:{$ne:<value>}} where likes != 50
  • Условный запрос, заголовок запросаMongoDB 教程все документы;
db.article.find({'title':'MongoDB 教程'})
  • Условный запрос, запрашивать все документы с лайками больше 50;
db.article.find({'likes':{$gt:50}})
  • И условия могут быть переданы вfind()Метод передает несколько ключей, разделенных запятыми, например, заголовок запросаMongoDB 教程и поAndyвсе документы;
db.article.find({'title':'MongoDB 教程','by':'Andy'})
  • Условие ИЛИ может быть достигнуто с помощью$orРеализация оператора, например, заголовок запросаRedis 教程илиMongoDB 教程все документы;
db.article.find({$or:[{"title":"Redis 教程"},{"title": "MongoDB 教程"}]})
  • Совместное использование условий И и ИЛИ, например, лайков в запросе больше 50, а заголовокRedis 教程или"MongoDB 教程всех документов.
db.article.find({"likes": {$gt:50}, $or: [{"title": "Redis 教程"},{"title": "MongoDB 教程"}]})

другие операции

Ограничение и пропуск операции

  • Чтобы прочитать указанное количество документов, вы можете использоватьlimit()метод, синтаксис следующий;
db.collection.find().limit(NUMBER)
  • Запрашивайте только 2 части данных в коллекции статей;
db.article.find().limit(2)
  • Чтобы пропустить указанное количество документов для чтения, вы можете использоватьskip()метод, синтаксис следующий;
db.collection.find().limit(NUMBER).skip(NUMBER)
  • Начиная со второго элемента, запросите 2 фрагмента данных в коллекции статей;
db.article.find().limit(2).skip(1)

Сортировать

  • Использование в MongoDBsort()способ сортировки данных,sort()Метод задает поле сортировки по параметрам и использует 1 и -1 для указания метода сортировки, 1 — по возрастанию, -1 — по убыванию;
db.collection.find().sort({KEY:1})
  • Отсортировать по полю лайков документы в сборнике статей в порядке убывания;
db.article.find().sort({likes:-1})

показатель

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

  • MongoDB используетcreateIndex()метод создания индекса, синтаксис следующий;

db.collection.createIndex(keys, options)
# background:建索引过程会阻塞其它数据库操作,设置为true表示后台创建,默认为false
# unique:设置为true表示创建唯一索引
# name:指定索引名称,如果没有指定会自动生成
  • Создайте индексы для полей заголовка и описания, 1 означает восходящий индекс, -1 означает нисходящий индекс, укажите, чтобы создать в фоновом режиме;
db.article.createIndex({"title":1,"description":-1}, {background: true})
  • Просмотр индексов, созданных в коллекции статей;
db.article.getIndexes()
/* 1 */
[
    {
        "v" : 2,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "test.article"
    },
    {
        "v" : 2,
        "key" : {
            "title" : 1.0,
            "description" : -1.0
        },
        "name" : "title_1_description_-1",
        "ns" : "test.article",
        "background" : true
    }
]

полимеризация

  • Совокупное использование в MongoDBaggregate()метод, аналогичный группе по оператору в SQL, синтаксис следующий;
db.collection.aggregate(AGGREGATE_OPERATION)
  • Обычно используемые операторы в агрегации:
оператор описывать
$sum Рассчитать сумму
$avg Рассчитать среднее
$min Рассчитать минимум
$max Рассчитать максимальное значение
  • Агрегировать документы по полю и подсчитывать количество документов, аналогично функции count() в SQL;
db.article.aggregate([{$group : {_id : "$by", sum_count : {$sum : 1}}}])
/* 1 */
{
    "_id" : "Andy",
    "sum_count" : 2.0
}

/* 2 */
{
    "_id" : "Ruby",
    "sum_count" : 1.0
}
  • Агрегируйте документы в соответствии с полем by и вычислите значение отрисовки поля лайков, аналогично оператору avg() в SQL;
db.article.aggregate([{$group : {_id : "$by", avg_likes : {$avg : "$likes"}}}])
/* 1 */
{
    "_id" : "Andy",
    "avg_likes" : 100.0
}

/* 2 */
{
    "_id" : "Ruby",
    "avg_likes" : 100.0
}

регулярное выражение

  • MongoDB использует$regexоператор для установки регулярного выражения совпадающей строки, которое можно использовать для нечеткого запроса, аналогично аналогичной операции в SQL;

  • Например, заголовок запроса содержит教程документация;

db.article.find({title:{$regex:"教程"}})
  • Для нечувствительных к регистру нечетких запросов используйте$optionsоператор;
db.article.find({title:{$regex:"elasticsearch",$options:"$i"}})

Использовать с SpringBoot

Конкретная ссылка:«торговый центр интегрирует MongoDB для реализации операций с документами»

публика

проект торгового центраПолный набор учебных пособий сериализуется,Обратите внимание на публичный аккаунтПолучите это прямо сейчас.

公众号图片