ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDBΒ»

Π”Ρ€ΡƒΠ·ΡŒΡ, ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ запуск курса Β«Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…Β» состоится ΡƒΠΆΠ΅ Π·Π°Π²Ρ‚Ρ€Π°, поэтому ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΡƒΡ€ΠΎΠΊ, запись ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ здСсь. Π’ этот Ρ€Π°Π· ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ популярной Π‘Π” MongoDB: ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ тонкости, рассмотрСли основы Ρ€Π°Π±ΠΎΡ‚Ρ‹, возмоТности ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ. А Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΡΠ½ΡƒΠ»ΠΈΡΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… User Cases.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

Π’Π΅Π±ΠΈΠ½Π°Ρ€ ΠΏΡ€ΠΎΠ²Ρ‘Π» Иван РСмСнь, Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ направлСния сСрвСрной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Β«Π‘ΠΈΡ‚ΠΈΠΌΠΎΠ±ΠΈΠ»Β».

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ MongoDB

MongoDB β€” докумСнтоориСнтированная Π‘Π£Π‘Π” с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π°Ρ описания схСмы Ρ‚Π°Π±Π»ΠΈΡ†. Она классифицируСтся ΠΊΠ°ΠΊ NoSQL ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ BSON (Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ JSON). ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ, написана Π½Π° языкС C++ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ синтаксис JavaScript. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° SQL отсутствуСт.

Π£ MongoDB Π΅ΡΡ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ для ΠΌΠ½ΠΎΠ³ΠΈΡ… популярных языков программирования (Π‘ΠΈ, C++, C#, Go, Java, JavaScript, Perl, PHP, Python, Ruby ΠΈ Π΄Ρ€.). Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ сообщСством Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ для ΠΏΡ€ΠΎΡ‡ΠΈΡ… языков программирования.

Π§Ρ‚ΠΎ ΠΆΠ΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим основныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹.

Π˜Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ MongoDB Π² Docker, пишСм:

docker run -it --rm -p 127.0.0.1:27017:27017 
--name mongo-exp-project mongo
docker exec -it mongo-exp-project mongo

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, происходит запуск ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° MongoDB:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ напишСм Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Hello World:

print (β€œHello world!”)

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

ПослС этого β€” запустим Ρ†ΠΈΠΊΠ»:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

Как Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ JS, Π° MongoDB β€” это ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ JavaScript.

Когда ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ MongoDB?

Π•ΡΡ‚ΡŒ Π±Π°ΠΉΠΊΠ° ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ срСдний стартапСр Π² ΠΊΡ€Π΅ΠΌΠ½ΠΈΠ΅Π²ΠΎΠΉ Π΄ΠΎΠ»ΠΈΠ½Π΅ β€” это Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нСдСлю Π½Π°Π·Π°Π΄ ΠΎΡ‚ΠΊΡ€Ρ‹Π» ΠΊΠ½ΠΈΠΆΠΊΡƒ Β«HTML для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²Β». Какой ΠΎΠ½ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ стСк? Π‘ΠΎΠ³Π»Π°ΡΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Ρƒ Π½Π΅Π³ΠΎ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΏΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ находится JavaScript, Π½Π° сСрвСрС крутится Node.js, Π° Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠΆΠ΅ JavaScript. Π­Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ β„– 1.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π΅ΡΡ‚ΡŒ прСкрасноС выступлСниС ΠŸΠ΅Ρ‚Ρ€Π° Π—Π°ΠΉΡ†Π΅Π²Π°, ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… спСциалистов ΠΏΠΎ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π² России. Π’ Π½Ρ‘ΠΌ ΠŸΡ‘Ρ‚Ρ€ рассказываСт ΠΎ MySQL ΠΈ MongoDB, удСляя особоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° ΠΈ Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, хочСтся ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ MongoDB характСризуСтся Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒΡŽ β€” ΠΈ это ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… особСнностСй Π‘Π”. Если Π²Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, какая Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, MongoDB прСкрасно ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, ΠΎΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ, ΠΊΠ°ΠΊ ΡˆΠ°Ρ€Π΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ рСпликация, ΠΈ всё это сдСлано достаточно ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

Π§Ρ‚ΠΎ касаСтся Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π² MongoDB, Ρ‚ΠΎ:

  • Π±Π°Π·Ρ‹ β€” это Π±Π°Π·Ρ‹ (схСмы, ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†);
  • Π² MongoDB Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ понятиС, ΠΊΠ°ΠΊ коллСкция β€” это Π°Π½Π°Π»ΠΎΠ³ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Π½Π°Π±ΠΎΡ€ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎ Π»ΠΎΠ³ΠΈΠΊΠ΅ Π²Π΅Ρ‰Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ связаны;
  • Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ β€” это Π°Π½Π°Π»ΠΎΠ³ строки.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ простыС запросы

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΡƒΠΆΠ½ΠΎ просто Π½Π°Ρ‡Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

use learn

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

Π’Π΅ΠΏΠ΅Ρ€ΡŒ сдСлаСм Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ вставочку Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. ΠŸΡƒΡΡ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π΅Π΄ΠΈΠ½ΠΎΡ€ΠΎΠ³ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Аврора:

db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450})

db β€” Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для доступа ΠΊ Π‘Π”, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΏΠΎ сути, сама Β«ΠΌΠΎΠ½Π³Π°Β». Для ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ sh, для Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ β€” rs.

КакиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΅ΡΡ‚ΡŒ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° db:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

Π˜Ρ‚Π°ΠΊ, вСрнёмся ΠΊ нашСй ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ примСнСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ консоль сообщит, Ρ‡Ρ‚ΠΎ вставлСна ΠΎΠ΄Π½Π° строка:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

Π‘Π»ΠΎΠ²ΠΎ unicorns Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450}) ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ. Π—Π΄Π΅ΡΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π½Π΅ описывали ΠΈ Π½Π΅ создавали, Π° просто написали β€˜unicorns’, сдСлали insert, ΠΈ Ρƒ нас появилась коллСкция.

А Π²ΠΎΡ‚ Ρ‚Π°ΠΊ ΠΌΡ‹ смоТСм ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС наши ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ:

db.getCollectionNames()

Ну ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. МоТСм Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ запросим ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ (Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² нашСм случаС Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠΆΠ΅ находится информация ΠΎ Π΄Π²ΡƒΡ… Π΅Π΄ΠΈΠ½ΠΎΡ€ΠΎΠ³Π°Ρ… с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ):

db.unicorns.find()

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π²ΠΎΡ‚ ΠΈ наш JSON (Π΅ΡΡ‚ΡŒ имя, ΠΏΠΎΠ», вСс, Π½Π΅ΠΊΠΈΠΉ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°):

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ вставим Π΅Ρ‰Ρ‘ ΠΏΠ°Ρ€ΠΎΡ‡ΠΊΡƒ Π΅Π΄ΠΈΠ½ΠΎΡ€ΠΎΠ³ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ:

db.unicorns.insert({name: 'Leto', gender: 'm', 
home: 'Arrakeen', worm: false}) 
db.unicorns.insert({name: 'Leto', gender: 'm', 
home: 'Arrakeen', worm: false})

И посмотрим, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρƒ нас появились Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля: home ΠΈ worm, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Ρƒ Авроры.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Ρ‰Ρ‘ нСсколько Π΅Π΄ΠΈΠ½ΠΎΡ€ΠΎΠ³ΠΎΠ²:

db.unicorns.insertMany([{name: 'Horny', dob: new Date(1992,2,13,7,47), loves: ['carrot','papaya'], weight: 600, gender: 'm', vampires: 63}, 
{name: 'Aurora', dob: new Date(1991, 0, 24, 13, 0), loves: ['carrot', 'grape'], weight: 450, gender: 'f', vampires: 43}, 
{name: 'Unicrom', dob: new Date(1973, 1, 9, 22, 10), loves: ['energon', 'redbull'], weight: 984, gender: 'm', vampires: 182}, 
{name: 'Roooooodles', dob: new Date(1979, 7, 18, 18, 44), loves: ['apple'], weight: 575, gender: 'm', vampires: 99}])

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ вставили с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript Π΅Ρ‰Ρ‘ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

Как Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Π² ΠΊΠ°ΠΊΠΈΡ… Π‘Π” ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ паспортныС Π΄Π°Π½Π½Ρ‹Π΅: Π² рСляционных Π‘Π” ΠΈΠ»ΠΈ Π² ΠΌΠΎΠ½Π³Π΅?

ΠžΡ‚Π²Π΅Ρ‚ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½ β€” Π² ΠΌΠΎΠ½Π³Π΅, ΠΈ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ…ΠΎΡ€ΠΎΡˆΠΎ это ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚. НС сСкрСт, Ρ‡Ρ‚ΠΎ ΠšΠ›ΠΠ”Π  β€” это боль Π² Π Π€. А ΠΌΠΎΠ½Π³Π° ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ лоТится Π½Π° адрСса, вСдь ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ всё ΠΊΠ°ΠΊ массив, ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΆΠΈΡ‚ΡŒ. И это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ User Case для MongoDB.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Ρ‰Ρ‘ Π΅Π΄ΠΈΠ½ΠΎΡ€ΠΎΠ³ΠΎΠ²:

db.unicorns.insert({name: 'Solnara', dob: new Date(1985, 6, 4, 2, 1), loves:['apple', 'carrot', 'chocolate'], weight:550, gender:'f', vampires:80}); 
db.unicorns.insert({name:'Ayna', dob: new Date(1998, 2, 7, 8, 30), loves: ['strawberry', 'lemon'], weight: 733, gender: 'f', vampires: 40}); 
db.unicorns.insert({name:'Kenny', dob: new Date(1997, 6, 1, 10, 42), loves: ['grape', 'lemon'], weight: 690, gender: 'm', vampires: 39}); 
db.unicorns.insert({name: 'Raleigh', dob: new Date(2005, 4, 3, 0, 57), loves: ['apple', 'sugar'], weight: 421, gender: 'm', vampires: 2}); 
db.unicorns.insert({name: 'Leia', dob: new Date(2001, 9, 8, 14, 53), loves: ['apple', 'watermelon'], weight: 601, gender: 'f', vampires: 33}); 
db.unicorns.insert({name: 'Pilot', dob: new Date(1997, 2, 1, 5, 3), loves: ['apple', 'watermelon'], weight: 650, gender: 'm', vampires: 54}); 
db.unicorns.insert({name: 'Nimue', dob: new Date(1999, 11, 20, 16, 15), loves: ['grape', 'carrot'], weight: 540, gender: 'f'}); 
db.unicorns.insert({name: 'Dunx', dob: new Date(1976, 6, 18, 18, 18), loves: ['grape', 'watermelon'], weight: 704, gender: 'm', vampires: 165});

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π’ качСствС dob Ρƒ нас хранятся Ρ†Π΅Π»Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. А Π΅Ρ‰Ρ‘ Π΅ΡΡ‚ΡŒ информация ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π»ΡŽΠ±ΠΈΡ‚ Π΅Π΄ΠΈΠ½ΠΎΡ€ΠΎΠ³, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ эти Π΄Π°Π½Π½Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Π½Π΅ Ρƒ всСх. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Π½ΡƒΡ‚Ρ€ΠΈ Π»Π΅ΠΆΠΈΡ‚ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ массив.

ΠšΡΡ‚Π°Ρ‚ΠΈ, для Π±ΠΎΠ»Π΅Π΅ красивого Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ поиска Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ .pretty():

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

Если Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ послСднСй ошибкС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

db.getLastError()

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ вставки, Π»ΠΈΠ±ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Write Concern. Π›ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ± этом Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, которая, кстати, Π² ΠΌΠΎΠ½Π³Π΅ вСсьма ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ. ΠšΡΡ‚Π°Ρ‚ΠΈ, Π½Π° Ρ…Π°Π±Ρ€Π΅ Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ нСплохая ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Π±ΠΎΠ»Π΅Π΅ слоТным запросам

Запрос ΠΏΠΎ Ρ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ поля:

db.unicorns.find({gender: 'm'})

Написав Ρ‚Π°ΠΊΠΎΠΉ запрос, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ Π½Π° консоли список всСх Π΅Π΄ΠΈΠ½ΠΎΡ€ΠΎΠ³ΠΎΠ²-ΠΌΡƒΠΆΡ‡ΠΈΠ½.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ запрос сразу ΠΏΠΎ нСскольким полям: ΠΏΠΎ ΠΏΠΎΠ»Ρƒ ΠΈ ΠΏΠΎ вСсу:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

Π’Ρ‹ΡˆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСлСктор $gt, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт вывСсти всСх Π΅Π΄ΠΈΠ½ΠΎΡ€ΠΎΠ³ΠΎΠ² муТского ΠΏΠΎΠ»Π° вСсом Π±ΠΎΠ»Π΅Π΅ 700.

МоТно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, сущСствуСт Π»ΠΈ ΠΏΠΎΠ»Π΅ Π²ΠΎΠΎΠ±Ρ‰Π΅:

db.unicorns.find({vampires: {$exists: false}})

Или Ρ‚Π°ΠΊ:

db.unicorns.find({'parents.father': {$exists: true}})

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π΅Π΄ΠΈΠ½ΠΎΡ€ΠΎΠ³ΠΎΠ², ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с Π±ΡƒΠΊΠ² А ΠΈΠ»ΠΈ Π°:

db.unicorns.find({name: {$regex: "^[Aa]"}})

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим поиск ΠΏΠΎ массиву. Вопрос β„– 1: Ρ‡Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ эта ΠΊΠΎΠΌΠ°Π½Π΄Π°:

db.unicorns.find({loves:'apple'})

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ: всСх, ΠΊΡ‚ΠΎ Π»ΡŽΠ±ΠΈΡ‚ яблоки.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Π΅Ρ€Π½Ρ‘Ρ‚ лишь Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π΅Π΄ΠΈΠ½ΠΎΡ€ΠΎΠ³Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТатся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ яблоки ΠΈ Π°Ρ€Π±ΡƒΠ·Ρ‹:

db.unicorns.find({loves:[ "apple", "watermelon" ]})

И Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°:

db.unicorns.find({loves:[ "watermelon", "apple" ]})

Π’ нашСм случаС ΠΎΠ½Π° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Π΅Ρ€Π½Ρ‘Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ массив, сравниваСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ со Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΈ Ρ‚. Π΄. Π’ΠΎ Π΅ΡΡ‚ΡŒ массив Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΈ ΠΏΠΎ позициям этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

А Π²ΠΎΡ‚ Ρ‚Π°ΠΊ выглядит поиск ΠΏΠΎ массиву с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«Π˜Π›Π˜Β»:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ продСмонстрируСт Π½Π°ΠΌ поиск с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° $all. И здСсь ΡƒΠΆΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Π°:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΈ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ массива:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

А Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΉΡ‚ΠΈ массив, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ большС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹? Для этого сущСствуСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ $where, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТныС Π²Π΅Ρ‰ΠΈ:

db.unicorns.find({$where: function() { return this.loves && (this.loves.length > 1) } })

ΠšΡΡ‚Π°Ρ‚ΠΈ, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π²ΠΎΡ‚ Π²Π°ΠΌ Ρ„Π°ΠΉΠ»ΠΈΠΊ с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ курсора

НСмного отвлСчёмся ΠΈ скаТСм ΠΏΠ°Ρ€Ρƒ слов ΠΏΡ€ΠΎ особСнности ΠΌΠΎΠ½Π³ΠΈ:

  • find() ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ β€” ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ «курсор»;
  • Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΡŽΡ‚ΡΡ, Π΅ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.

Набрав db.unicorns.find Π±Π΅Π· скобок, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ подсказку:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ запросы

Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ $in:

db.unicorns.find({weight: {$in: [650, 704]}})

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ update. НапримСр, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ вСс Π΅Π΄ΠΈΠ½ΠΎΡ€ΠΎΠ³Π° Roooooodles:

db.unicorns.update({name: "Roooooodles"}, {weight: 2222})

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π°ΡˆΠΈΡ… дСйствий Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ обновится, Π° Π² Π½Ρ‘ΠΌ останСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

Π’ΠΎ Π΅ΡΡ‚ΡŒ СдинствСнноС, Ρ‡Ρ‚ΠΎ останСтся Ρƒ нашСго ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° β€” это вСс 2222 ΠΈ, разумССтся, id.

Π˜ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ $set:

db.unicorns.update({_id: ObjectId("5da6ea4d9703b8be0089e6db")}, {$set: { "name" : "Roooooodles", "dob" : ISODate("1979-08-18T18:44:00Z"), "loves" : [ "apple" ], "gender" : "m", "vampires" : 99}})

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ значСния:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

А Π΅Ρ‰Ρ‘ Π΅ΡΡ‚ΡŒ upsert β€” комбинация update ΠΈ insert:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

А Π²ΠΎΡ‚ ΠΊΠ°ΠΊ осущСствляСтся Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° ΠΏΠΎΠ»Π΅ΠΉ:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

ΠžΡΡ‚Π°Ρ‘Ρ‚ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Ρƒ слов ΠΏΡ€ΠΎ skip ΠΈ limit:

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ€ «ΠžΡΠ½ΠΎΠ²Ρ‹ MongoDB»

КоллСги, Π½Π° этом всё, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ подробности, смотритС Π²ΠΈΠ΄Π΅ΠΎ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ. И Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ свои ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com