MongoDB

MongoDB DataBase

ВСория

MongoDB - это докумСнтоориСнтированная Π‘Π”, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с JSON Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ прСдставлСния Π΄Π°Π½Π½Ρ‹Ρ… Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… состоит ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ. ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ хранят Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΆΠ΅ хранятся Π² JSON-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ структуру

Π§Ρ‚ΠΎ прСдставляСт ΠΈΠ· сСбя Mongo DB?

ΠšΠΎΠ½Π½Π΅ΠΊΡ‚ΠΈΠΌΡΡ ΠΊ Π‘Π”

И Ρ‚ΡƒΡ‚ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ всС наши Π‘Π”

И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ графичСского интСрфСйса ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅

И ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠΌ список ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Ρƒ нас Π‘Π”

show databases
// ΠΈΠ»ΠΈ
show dbs

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ использованиС Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ use ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ ΠΊΠ°ΠΊΡƒΡŽ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Если Π΅Ρ‘ Π½Π΅Ρ‚, Ρ‚ΠΎ эта ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ создана

use mongo // создаст Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ mongo

db.createCollection(β€œΠΈΠΌΡ_коллСкции”) - создаст Π½ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π‘Π”

db.createCollection("users") // создаст ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ users Π² сущности mongo

Π£Π²ΠΈΠ΄Π΅Ρ‚ΡŒ измСнСния ΠΌΡ‹ смоТСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС обновлСния Π‘Π”

И Π²ΠΎΡ‚ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ

ΠžΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ всС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π‘Π”

show collection

Π£Π΄Π°Π»ΠΈΡ‚ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…

db.dropDatabase()

insert - Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ

insert - ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π±Π°Π·Ρƒ. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ инсСртится Π½ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ users

db.users.insert({
Β  Β  name: "Valery",
Β  Β  age: 19
})

Однако ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ, которая Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎ insert ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ стоит - этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»Π΅Π½ для использования

'DeprecationWarning: Collection.insert() is deprecated. Use insertOne, insertMany, or bulkWrite.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Ρ‰Ρ‘ нСсколько записСй Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

db.users.insertMany([
Β  Β  { name: "Valery", age: 19},
Β  Β  { name: "Rita", age: 24},
Β  Β  { name: "Galina", age: 34},
Β  Β  { name: "Varya", age: 32},
Β  Β  { name: "Masya", age: 25}
])

Π’ ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΊ 5ΠΈ сущностям Ρƒ нас Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π΅Ρ‰Ρ‘ ΠΈ id

find - Поиск Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

ΠœΠ΅Ρ‚ΠΎΠ΄ find Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ вСсь Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ users

db.users.find()

find - Поиск ΠΏΠΎ критСриям

Π’Π°ΠΊ ΠΆΠ΅ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ find ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ поиска, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ Π½Π°ΠΌ свойствами ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ свойствами:

db.users.find({age: 25, name: 'Masya'})
{
	_id: ObjectId("6324b047183b76a3589dcc11"),
	name: 'Masya',
	age: 25
}

Бвойств ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ

db.users.find({age: 19})
{
	_id: ObjectId("6324aec2183b76a3589dcc0c"),
	name: 'Valery',  age: 19
}
{
	_id: ObjectId("6324b047183b76a3589dcc0d"),
	name: 'Valery',  age: 19
}

find - $or УсловиС Π˜Π›Π˜

Π’ качСствС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с условиями. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· {$or: [{ΠΏΠ΅Ρ€Π²ΠΎΠ΅ условиС}, {Π²Ρ‚ΠΎΡ€ΠΎΠ΅ условиС}]} ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ массив условий поиска ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

db.users.find({$or:[{age: 25}, {age: 32}, {name: 'Rita'}]})
{
	_id: ObjectId("6324b047183b76a3589dcc0e"),
	name: 'Rita',  age: 24
}
{
	_id: ObjectId("6324b047183b76a3589dcc10"),
	name: 'Varya',  age: 32
}
{
	_id: ObjectId("6324b047183b76a3589dcc11"),
	name: 'Masya',  age: 25
}

find - gt, gte, $ne, мСньшС, большС, Π»ΠΈΠ±ΠΎ Ρ€Π°Π²Π½ΠΎ, Π½Π΅ Ρ€Π°Π²Π½ΠΎ

lte - less then or equal - ΠΈΡ‰Π΅Ρ‚ значСния мСньшС ΠΈΠ»ΠΈ = Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ gte - greater or equal - ΠΈΡ‰Π΅Ρ‚ значСния большС ΠΈΠ»ΠΈ = Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ $ne - not equal - ΠΈΡ‰Π΅Ρ‚ значСния Π½Π΅ Ρ€Π°Π²Π½Ρ‹Π΅ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, которая Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с возрастом мСньшС 30:

db.users.find({age: {$lt: 30}})
{ _id: ObjectId("6324aec2183b76a3589dcc0c"),  name: 'Valery',  age: 19 }
{ _id: ObjectId("6324b047183b76a3589dcc0d"),  name: 'Valery',  age: 19 }
{ _id: ObjectId("6324b047183b76a3589dcc0e"),  name: 'Rita',  age: 24 }
{ _id: ObjectId("6324b047183b76a3589dcc11"),  name: 'Masya',  age: 25 }

find.sort- Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°

ΠœΠ΅Ρ‚ΠΎΠ΄ sort(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся послС find, сортируСт значСния ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌΡƒ свойству. Π—Π°Π΄Π°Π½ΠΈΠ΅ сортировки зависит ΠΎΡ‚ числа 1 (возрастаниС) ΠΈΠ»ΠΈ -1 (ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΠ΅)

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ вывСдутся всС записи Π² порядкС возрастания

db.users.find().sort({age: 1})

А Ρ‚ΡƒΡ‚ Π² порядкС убывания

db.users.find().sort({age: -1})

find.limit - ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ количСству ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²

Ѐункция limit() позволяСт Π½Π°ΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ число ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… записСй

db.users.find().limit(2)
{ _id: ObjectId("6324aec2183b76a3589dcc0c"),  name: 'Valery',  age: 19 }
{ _id: ObjectId("6324b047183b76a3589dcc0d"),  name: 'Valery',  age: 19 }

Π’Π°ΠΊ ΠΆΠ΅ имССтся функция findOne({свойство_ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°}), которая позволяСт вывСсти ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ удовлСтворяСт Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ условиям

db.users.findOne({_id: ObjectId("6324b047183b76a3589dcc0e")})
{
	_id: ObjectId("6324b047183b76a3589dcc0e"),
	name: 'Rita',  age: 24
}

Π£ΠΆΠ΅ функция distinct() Π²Π΅Ρ€Π½Ρ‘Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ записи. Π’ Π±Π°Π·Π΅ находится Π΄Π²Π° поля с β€˜Valery’. Дистинкт Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ всС ΠΈΠΌΠ΅Π½Π° Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ

db.users.distinct('name')
[ 'Galina', 'Masya', 'Rita', 'Valery', 'Varya' ]

Π’Π°ΠΊ ΠΆΠ΅ хочСтся ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π΅ просто Π½Π°ΠΉΡ‚ΠΈ ΠΎΠ΄Π½Ρƒ запись, Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ/ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ/ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Ρ‘

update - $set ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

Ѐункция update() ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡƒΡŽ запись. Однако Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ updateOne() ΠΈΠ»ΠΈ updateMany()

db.users.update(
Β  Β  {name: "Valery"}, // Π˜Ρ‰Π΅Ρ‚ запись с Ρ‚Π°ΠΊΠΈΠΌ свойством
Β  Β  {
Β  Β  Β  Β  $set: { // Π—Π°ΠΌΠ΅Π½Π°
            name: "Ilon", // ИмСни
Β  Β  Β  Β  Β  Β  age: 15 // Возраста
Β  Β  Β  Β  }
Β  Β  }
)

Π‘Ρ‹Π»ΠΎ Π΄Π²Π΅ записи с β€˜Valery’ - ΠΎΠ΄Π½Π° замСнилась Π½Π° Π²Π²Π΅Π΄Ρ‘Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ значСния

{
	_id: ObjectId("6324aec2183b76a3589dcc0c"),
	name: 'Ilon',  age: 15
}
{
	_id: ObjectId("6324b047183b76a3589dcc0d"),
	name: 'Valery',  age: 19
}

update - $rename ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΡ‚ΠΎΡ€ $rename ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ΅Ρ‚ ΠΊΠ»ΡŽΡ‡ΠΈ

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠ»ΡŽΡ‡ name Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Π² fullname

db.users.updateMany(
Β  Β  {},
Β  Β  {
Β  Β  Β  Β  $rename: {
Β  Β  Β  Β  Β  Β  name: "fullname"
Β  Β  Β  Β  }
Β  Β  }
)
{
	_id: ObjectId("6324aec2183b76a3589dcc0c"),
	age: 15,
	fullname: 'Ilon'
}

delete - Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ deleteOne() ΠΈ deleteMany() ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ свойству

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ удалится ΠΏΠΎΠ»Π΅ β€˜Ilon’

db.users.deleteOne({age: 15})

BulkWrite - ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ запрос

ΠœΠ΅Ρ‚ΠΎΠ΄ bulkWrite([{}]) позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ мноТСствСнныС запросы. Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² сСбя массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ пишСм сами запросы (Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅)

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ добавляСм Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ удаляСм Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ

db.users.bulkWrite([
Β  Β  {
Β  Β  Β  Β  insertOne: {
Β  Β  Β  Β  Β  Β  document: {name: 'Nastya', age: 18}
Β  Β  Β  Β  }
Β  Β  },
Β  Β  {
Β  Β  Β  Β  deleteOne: {
Β  Β  Β  Β  Β  Β  filter: {fullname: 'Rita'}
Β  Β  Β  Β  }
Β  Β  }
])

Как ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Π»ΠΎΠ³Π΅ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ появляСтся ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ), ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΈ ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Π’ΠΈΠΏΡ‹ связСй

1 ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ

Массив posts Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² сСбС Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ

db.users.update(
Β  Β  {fullname: 'Masya'},
Β  Β  {
Β  Β  Β  Β  $set: {
Β  Β  Β  Β  Β  Β  posts: [
Β  Β  Β  Β  Β  Β  Β  Β  {title: 'JS', text: 'JS top'},
Β  Β  Β  Β  Β  Β  Β  Β  {title: 'mongo', text: 'mongo db'}
Β  Β  Β  Β  Β  Β  ]
Β  Β  Β  Β  }
Β  Β  }
)

Π§Π΅Ρ€Π΅Π· findOne() ΠΌΠΎΠΆΠ½ΠΎ вывСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ посты ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Ссли Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎΠ΅ Π½Π°ΠΌ свойство)

db.users.findOne(
Β  Β  {fullname: 'Masya'},
Β  Β  {posts: 1}
)

Π’ΡƒΡ‚ ΠΌΡ‹ ΠΈΡ‰Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ свойство posts, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ свойство title. ΠŸΡ€ΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· $elemMatch

db.users.find(
Β  Β  {
Β  Β  Β  Β  posts: {
Β  Β  Β  Β  Β  Β  $elemMatch: {
Β  Β  Β  Β  Β  Β  Β  Β  title: "JS"
Β  Β  Β  Β  Β  Β  }
Β  Β  Β  Β  }
Β  Β  }
)

Π’Π°ΠΊ ΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ $exists, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π½Π°ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ сущСствуСт свойство posts

db.users.find({posts: {$exists: true}})

Π Π°Π±ΠΎΡ‚Π° с MongoDB ΠΈΠ· Node

Установка зависимостСй Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅:

npm install -y // устанавливаСт всС зависимости
npm install mongodb // устанавливаСт mongo Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅

Π”Π°Π»Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π° ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΌ сСрвСрС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот сСрвСр ΠΈ Π²Π·ΡΡ‚ΡŒ с Π½Π΅Π³ΠΎ ссылку (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ mongodb atlas). ΠŸΠΎΡ‚ΠΎΠΌ ΡƒΠΆΠ΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΌΠΎΠ½Π³ΠΎ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ· ΠœΠΎΠ½Π³ΠΎΠšΠ»ΠΈΠ΅Π½Ρ‚Π°. И Π΄Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ синтаксисС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈ пользовались Π² MongoShell