Адрес фактического центра электронной коммерции 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)
Сортировать
- Использование в MongoDB
sort()
способ сортировки данных,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
}
]
полимеризация
- Совокупное использование в MongoDB
aggregate()
метод, аналогичный группе по оператору в 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 для реализации операций с документами»
публика
проект торгового центраПолный набор учебных пособий сериализуется,Обратите внимание на публичный аккаунтПолучите это прямо сейчас.