noSQL andmebaas
Что такое MongoDB?
MongoDB — это база данных, в которой данные хранятся не в виде таблиц (как в классических SQL-базах), а в виде документов в формате JSON (на самом деле BSON – двоичный JSON).
MongoDB — это NoSQL-база данных, то есть:
- не использует таблицы и строки,
- данные более гибкие по структуре,
- отлично подходит для работы с вложенными данными (например, массивами, объектами).
Что такое коллекция (по-английски — collection)?
Коллекция — это как таблица в обычной базе данных.
В ней хранятся документы.
Каждая коллекция содержит похожие по смыслу документы, например:
users
— коллекция пользователей,posts
— коллекция статей,products
— коллекция товаров.
Что такое документ?
Документ — это как строка в таблице, но в виде JSON-объекта.
Каждый документ может иметь свою структуру, не обязательно строго одинаковую, как в SQL.
Команды
show databases
Показывает все базы данных в MongoDB.

use mongo
Выбирает (или создаёт, если её ещё нет) базу данных mongo.

db.createCollection("users")
Создаёт коллекцию users вручную.

show collections
Показывает список коллекций (таблиц) в выбранной базе.

db.dropDatabase()
Удаляет текущую базу данных.

show dbs
Показывает список баз данных. То же самое, что и show databases.

db.users.insert({
name: "ulbity",
age: 25
})
Добавляет один документ в коллекцию users.

db.users.find()
Находит все документы в коллекции users.

db.users.insertMany([
{name: "vasja", age: 28},
{name: "petja", age: 23},
{name: "dima", age: 35},
{name: "anton", age: 24},
{name: "ulbi", age: 42}
])
Добавляет сразу несколько документов в users.

db.users.find({age:25})
Ищет документы, где age равен 25.

db.users.find({age:25, name: "ulbitv"})
Ищет документы, где age = 25 и name = “ulbitv”.
db.users.find({$or:[{age:35}, {name: "ulbity"}]})
Находит тех, кто:
- либо age = 35
- либо name = “ulbity”
- (или оба сразу)

db.users.find({age:{$lt:28}})
меньше

db.users.find({age:{$lte:28}})
меньше или равно

db.users.find({age:{$gt:28}})
больше

db.users.find({age:{$gte:28}})
больше или равно

db.users.find({age:{$ne:28}})
не равно

db.users.find().sort({age:1})
Сортировка по возрасту по возрастанию

db.users.find().sort({age:-1})
Сортировка по убыванию.

db.users.find().limit(2)
Показывает только первые 2 результата.

db.users.findOne({_id: ObjectId('682d8387fc06870706e46c70')})
Возвращает один документ, подходящий под условие.

db.users.update(
{name:"ulbity"},
{
$set: {
name: "ilon mask",
age: 45
}
}
)
Обновляет один документ по условию.

db.users.updateMany(
{},
{
$rename: {
name: "fullname"
}
}
)
Обновляет все документы. В этом случае — переименовывает поле name
в fullname
.

db.users.deleteOne({age:24})
Удаляет один документ по условию.

db.users.bulkWrite([
{
insertOne: {
document: {fullname: "nastja", age:18}
}
},
{
deleteOne:{
filter: {fullname: "petja"}
}
}]
)
Выполняет несколько операций сразу. В этом случае:
- Вставляет
nastja
, 18 лет - Удаляет
petja

db.users.update(
{fullname: "vasja"},
{
$set: {
posts: [
{title: 'javascript', text: 'js top'},
{title: 'mongo', text: 'mongo database'}
]
}
}
)
Добавляет поле posts
— массив постов (статей) пользователю “vasja”.

db.users.findOne(
{fullname: "vasja"},
{posts:1}
)
Находит пользователя “vasja” и показывает только поле posts
.

db.users.findOne(
{
posts:{
$elemMatch:{
title:"javascript"
}
}
}
)
Ищет документы, в которых в массиве posts
есть элемент с title = javascript.

db.users.find({posts:{$exists:true}})
Находит документы, где существует поле posts
.

Подключение MongoDB Cloud (https://cloud.mongodb.com/) к базе данных через Node.js
const { MongoClient } = require('mongodb');
const client = new MongoClient('mongodb+srv://annaoleks88:DorisOceana1323@cluster0.h01rrjx.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0')
const start = async()=> {
try{
await client.connect()
console.log('Connected to MongoDB')
await client.db().collection('users')
const users = await client.db().collection('users')
users.insertOne({name: 'ulbi tv', age:23})
const user = await users.findOne({name: 'ulbi tv'})
console.log(user)
} catch (e){
console.log(e)
}
}
start()


