MongoDB

Полезные ссылки

https://www.mongodb.com/

Сервер

Документация

Установка сервера

docker volume create mongodata

docker run --name mongodb \
  -d \
  --restart=unless-stopped \
  -v mongodata:/data/db \
  -p 127.0.0.1:27017:27017 \
  -e MONGODB_INITDB_ROOT_USERNAME=user \
  -e MONGODB_INITDB_ROOT_PASSWORD=secret \
  mongodb/mongodb-community-server:latest

Установка и настройка клиeнта mongosh

Install mongosh

wget -qO- https://www.mongodb.org/static/pgp/server-7.0.asc | sudo tee /etc/apt/trusted.gpg.d/server-7.0.asc
sudo apt-get install gnupg
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt-get update

sudo apt-get install -y mongodb-mongosh
mongosh --version

Подключение к БД

Connect to a Deployment

mongosh "mongodb://localhost:27017"

# --- подключаемся с аутентификацией
mongosh "mongodb://localhost:27017" --username user --authenticationDatabase admin

# --- подключаемся с аутентификацией к БД my_database с аутентификацией
mongosh "mongodb://localhost:27017/my_database" --username user --authenticationDatabase admin

# --- подключаемся с параметрами в строке подключения
mongosh "mongodb://user:secret@localhost:27017/my_database?authSource=admin"

Работаем в mongosh

Команды

# --- переключение БД
use database

Агрегация

# --- на входе - коллекция документов {filename: '/foo/bar'}
#      на выходе - один документ {filenames: ['/foo/bar1', '/foo/bar2', ...]}
db.parsedFiles.aggregate([ { $group: { _id: null, filenames: { $addToSet: "$filename" } } }, { $project: { _id: 0, filenames: 1 } }]);

# --- преобразование типов
#     на входе - {age: "25"}
#     на выходе - {age: 25}
db.students.aggregate([{$addFields: {age: {$toInt: "$age"}}}, {$out: "students"}])

Установка и настройка клиента Compass

sudo dpkg -i mongodb-compass_1.39.0_amd64.deb
mongodb-compass