ΠΡΡΠ·ΡΡ, ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ Π·Π°ΠΏΡΡΠΊ ΠΊΡΡΡΠ°
ΠΠ΅Π±ΠΈΠ½Π°Ρ ΠΏΡΠΎΠ²ΡΠ»
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ 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:
Π ΡΠ΅ΠΏΠ΅ΡΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ Hello World:
print (βHello world!β)
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ β Π·Π°ΠΏΡΡΡΠΈΠΌ ΡΠΈΠΊΠ»:
ΠΠ°ΠΊ Π²Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΠΌΠΈ ΠΎΠ±ΡΡΠ½ΡΠΉ JS, Π° MongoDB β ΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ JavaScript.
ΠΠΎΠ³Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ MongoDB?
ΠΡΡΡ Π±Π°ΠΉΠΊΠ° ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠ΅Π΄Π½ΠΈΠΉ ΡΡΠ°ΡΡΠ°ΠΏΠ΅Ρ Π² ΠΊΡΠ΅ΠΌΠ½ΠΈΠ΅Π²ΠΎΠΉ Π΄ΠΎΠ»ΠΈΠ½Π΅ β ΡΡΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅Π΄Π΅Π»Ρ Π½Π°Π·Π°Π΄ ΠΎΡΠΊΡΡΠ» ΠΊΠ½ΠΈΠΆΠΊΡ Β«HTML Π΄Π»Ρ ΡΠ°ΠΉΠ½ΠΈΠΊΠΎΠ²Β». ΠΠ°ΠΊΠΎΠΉ ΠΎΠ½ Π²ΡΠ±Π΅ΡΠ΅Ρ ΡΡΠ΅ΠΊ? Π‘ΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π΅ΠΌΡ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π΅Π³ΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΏΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ JavaScript, Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΊΡΡΡΠΈΡΡΡ Node.js, Π° Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΡΠΎΠΆΠ΅ JavaScript. ΠΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ β 1.
ΠΠΎ-Π²ΡΠΎΡΡΡ
, Π΅ΡΡΡ
Π-ΡΡΠ΅ΡΡΠΈΡ , Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ½ΡΡΡ, ΡΡΠΎ MongoDB Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΠ΅ΡΡΡ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡΡ β ΠΈ ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΠ. ΠΡΠ»ΠΈ Π²Ρ Π·Π°ΡΠ°Π½Π΅Π΅ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊΠ°Ρ Π±ΡΠ΄Π΅Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ°, MongoDB ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ. Π ΡΠΎΠΌΡ ΠΆΠ΅, ΠΎΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ, ΠΊΠ°ΠΊ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, ΠΈ Π²ΡΡ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌ, ΡΠΎ Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π² MongoDB, ΡΠΎ:
- Π±Π°Π·Ρ β ΡΡΠΎ Π±Π°Π·Ρ (ΡΡ Π΅ΠΌΡ, ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ ΡΠ°Π±Π»ΠΈΡ);
- Π² MongoDB Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅, ΠΊΠ°ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ β ΡΡΠΎ Π°Π½Π°Π»ΠΎΠ³ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ Π½Π°Π±ΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎ Π»ΠΎΠ³ΠΈΠΊΠ΅ Π²Π΅ΡΠ΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½Ρ;
- Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ β ΡΡΠΎ Π°Π½Π°Π»ΠΎΠ³ ΡΡΡΠΎΠΊΠΈ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΡΠΎΡΡΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°ΡΠ°ΡΡ Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
use learn
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ Π²ΡΡΠ°Π²ΠΎΡΠΊΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. ΠΡΡΡΡ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π΅Π΄ΠΈΠ½ΠΎΡΠΎΠ³ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΠ²ΡΠΎΡΠ°:
db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450})
db β Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΠ, ΡΠΎ Π΅ΡΡΡ, ΠΏΠΎ ΡΡΡΠΈ, ΡΠ°ΠΌΠ° Β«ΠΌΠΎΠ½Π³Π°Β». ΠΠ»Ρ ΡΠ°ΡΠ΄ΠΈΠ½Π³Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ sh, Π΄Π»Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ β rs.
ΠΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΅ΡΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° db:
ΠΡΠ°ΠΊ, Π²Π΅ΡΠ½ΡΠΌΡΡ ΠΊ Π½Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΡΠΎΠΎΠ±ΡΠΈΡ, ΡΡΠΎ Π²ΡΡΠ°Π²Π»Π΅Π½Π° ΠΎΠ΄Π½Π° ΡΡΡΠΎΠΊΠ°:
Π‘Π»ΠΎΠ²ΠΎ unicorns
Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ db.unicorns.insert({name: 'Aurora', gender: 'f', weight: 450})
ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ. ΠΠ΄Π΅ΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π½Π΅ ΠΎΠΏΠΈΡΡΠ²Π°Π»ΠΈ ΠΈ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈ, Π° ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ βunicornsβ, ΡΠ΄Π΅Π»Π°Π»ΠΈ insert, ΠΈ Ρ Π½Π°Ρ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ.
Π Π²ΠΎΡ ΡΠ°ΠΊ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ Π½Π°ΡΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ:
db.getCollectionNames()
ΠΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠΎΠΆΠ΅ΠΌ Π²ΡΡΠ°Π²ΠΈΡΡ Π΅ΡΡ ΠΎΠ΄Π½Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ:
Π ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΠΎΡΠΈΠΌ ΠΏΠΎΠ»Π½ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ (Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ, ΡΡΠΎ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
ΡΠΆΠ΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π΄Π²ΡΡ
Π΅Π΄ΠΈΠ½ΠΎΡΠΎΠ³Π°Ρ
Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ):
db.unicorns.find()
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π²ΠΎΡ ΠΈ Π½Π°Ρ JSON (Π΅ΡΡΡ ΠΈΠΌΡ, ΠΏΠΎΠ», Π²Π΅Ρ, Π½Π΅ΠΊΠΈΠΉ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°):
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π²ΡΡΠ°Π²ΠΈΠΌ Π΅ΡΡ ΠΏΠ°ΡΠΎΡΠΊΡ Π΅Π΄ΠΈΠ½ΠΎΡΠΎΠ³ΠΎΠ² Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ:
db.unicorns.insert({name: 'Leto', gender: 'm',
home: 'Arrakeen', worm: false})
db.unicorns.insert({name: 'Leto', gender: 'm',
home: 'Arrakeen', worm: false})
Π ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ:
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Ρ Π½Π°Ρ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ: 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 Π΅ΡΡ ΡΠ΅ΡΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
ΠΠ°ΠΊ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅, Π² ΠΊΠ°ΠΊΠΈΡ
ΠΠ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ Ρ
ΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΡΠΏΠΎΡΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅: Π² ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ
ΠΠ ΠΈΠ»ΠΈ Π² ΠΌΠΎΠ½Π³Π΅?
ΠΡΠ²Π΅Ρ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½ β Π² ΠΌΠΎΠ½Π³Π΅, ΠΈ Π²ΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΎΡΠΎΡΠΎ ΡΡΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ. ΠΠ΅ ΡΠ΅ΠΊΡΠ΅Ρ, ΡΡΠΎ ΠΠΠΠΠ β ΡΡΠΎ Π±ΠΎΠ»Ρ Π² Π Π€. Π ΠΌΠΎΠ½Π³Π° ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ Π»ΠΎΠΆΠΈΡΡΡ Π½Π° Π°Π΄ΡΠ΅ΡΠ°, Π²Π΅Π΄Ρ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π²ΡΡ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ², ΠΈ Π±ΡΠ΄Π΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅ ΠΆΠΈΡΡ. Π ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΈΠΉ 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});
Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ dob Ρ Π½Π°Ρ Ρ
ΡΠ°Π½ΡΡΡΡ ΡΠ΅Π»ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π Π΅ΡΡ Π΅ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π»ΡΠ±ΠΈΡ Π΅Π΄ΠΈΠ½ΠΎΡΠΎΠ³, ΠΏΡΠΈΡΡΠΌ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π΅ΡΡΡ Π½Π΅ Ρ Π²ΡΠ΅Ρ
. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Π½ΡΡΡΠΈ Π»Π΅ΠΆΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ².
ΠΡΡΠ°ΡΠΈ, Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΠ°ΡΠΈΠ²ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΎΠΈΡΠΊΠ° Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ .pretty()
:
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
db.getLastError()
ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΡΡΠ°Π²ΠΊΠΈ, Π»ΠΈΠ±ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Write Concern. ΠΡΡΡΠ΅ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ Π²
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌ Π·Π°ΠΏΡΠΎΡΠ°ΠΌ
ΠΠ°ΠΏΡΠΎΡ ΠΏΠΎ ΡΠΎΡΠ½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ:
db.unicorns.find({gender: 'm'})
ΠΠ°ΠΏΠΈΡΠ°Π² ΡΠ°ΠΊΠΎΠΉ Π·Π°ΠΏΡΠΎΡ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π² Π²ΡΠ²ΠΎΠ΄Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ Π΅Π΄ΠΈΠ½ΠΎΡΠΎΠ³ΠΎΠ²-ΠΌΡΠΆΡΠΈΠ½.
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ ΡΡΠ°Π·Ρ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ: ΠΏΠΎ ΠΏΠΎΠ»Ρ ΠΈ ΠΏΠΎ Π²Π΅ΡΡ:
ΠΡΡΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅Π»Π΅ΠΊΡΠΎΡ $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" ]})
Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½Π° Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π²Π΅ΡΠ½ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ ΠΌΠ°ΡΡΠΈΠ², ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Ρ ΠΏΠ΅ΡΠ²ΡΠΌ, Π²ΡΠΎΡΠΎΠΉ ΡΠΎ Π²ΡΠΎΡΡΠΌ ΠΈ Ρ. Π΄. Π’ΠΎ Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Π΅ΡΡ ΠΈ ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΡΠΌ ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
Π Π²ΠΎΡ ΡΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Β«ΠΠΠΒ»:
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ Π½Π°ΠΌ ΠΏΠΎΠΈΡΠΊ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° $all. Π Π·Π΄Π΅ΡΡ ΡΠΆΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π΅ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½Π°:
Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΊΠ°ΡΡ ΠΈ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°:
Π ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π½Π°ΠΉΡΠΈ ΠΌΠ°ΡΡΠΈΠ², Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ? ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ $where, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π²Π΅ΡΠΈ:
db.unicorns.find({$where: function() { return this.loves && (this.loves.length > 1) } })
ΠΡΡΠ°ΡΠΈ, Π΅ΡΠ»ΠΈ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠ²Π°ΡΡΡΡ,
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΊΡΡΡΠΎΡΠ°
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²Π»Π΅ΡΡΠΌΡΡ ΠΈ ΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΏΠ°ΡΡ ΡΠ»ΠΎΠ² ΠΏΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΌΠΎΠ½Π³ΠΈ:
- find() ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ β ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ Β«ΠΊΡΡΡΠΎΡΒ»;
- ΡΠΎ, ΡΡΠΎ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ°ΡΠ°ΡΡΡΡ, Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ°.
ΠΠ°Π±ΡΠ°Π² db.unicorns.find Π±Π΅Π· ΡΠΊΠΎΠ±ΠΎΠΊ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ:
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π·Π°ΠΏΡΠΎΡΡ
ΠΡΡΡ Π΅ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ $in:
db.unicorns.find({weight: {$in: [650, 704]}})
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ update. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π²Π΅Ρ Π΅Π΄ΠΈΠ½ΠΎΡΠΎΠ³Π° Roooooodles:
db.unicorns.update({name: "Roooooodles"}, {weight: 2222})
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π½Π°ΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡΡ, Π° Π² Π½ΡΠΌ ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅:
Π’ΠΎ Π΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° β ΡΡΠΎ Π²Π΅Ρ 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}})
Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
Π Π΅ΡΡ Π΅ΡΡΡ upsert β ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ update ΠΈ insert:
Π Π²ΠΎΡ ΠΊΠ°ΠΊ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ±ΠΎΡΠΊΠ° ΠΏΠΎΠ»Π΅ΠΉ:
ΠΡΡΠ°ΡΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ°ΡΡ ΡΠ»ΠΎΠ² ΠΏΡΠΎ skip ΠΈ limit:
ΠΠΎΠ»Π»Π΅Π³ΠΈ, Π½Π° ΡΡΠΎΠΌ Π²ΡΡ, Π΅ΡΠ»ΠΈ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ,
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com