ืืืจืื, ืขืื ืืฉืงืช ืงืืจืก
ืืืืืื ืจ ื ืขืจื
ืชืืื ืืช MongoDB
MongoDB ืืื DBMS ืืื ืื ืืกืื ืืงืื ืคืชืื ืฉืืื ื ืืืจืฉ ืชืืืืจ ืฉื ืกืืืืช ืืืืื. ืืื ืืกืืื ื-NoSQL ืืืฉืชืืฉ ื-BSON (JSON ืืื ืืจื). ื ืืชื ืืืจืืื ืืืืฅ ืืงืืคืกื, ืืชืื ื-C++ ืืชืืื ืืชืืืืจ JavaScript. ืืื ืชืืืื ื-SQL.
ื-MongoDB ืืฉ ืื ืืื ืืชืงื ืื ืืฉืคืืช ืชืื ืืช ืคืืคืืืจืืืช ืจืืืช (C, 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:
ืขืืฉืื ืืืื ื ืืชืื ืืช ืืืกืืจืชื ืฉืืื ืขืืื:
print (โHello world!โ)
ืืืืจ ืืื - ืืืื ื ืชืืื ืืช ืืืืืืจ:
ืืคื ืฉืฉืืช ืื, ืืคื ืื ื JS ืจืืื, ื-MongoDB ืืื ืืชืืจืืื ืืื ืฉื JavaScript.
ืืชื ืืืฉืชืืฉ ื- MongoDB?
ืืฉ ืกืืคืืจ ืฉืืกืืืจืืืค ืืืืืฆืข ืืขืืง ืืกืืืืงืื ืืื ืืืื ืฉืคืชื ืืช ืืกืคืจ "HTML for Dummies" ืืคื ื ืฉืืืข. ืืืืื ืขืจืืื ืืื ืืืืจ? ืืกืืื ืฉืืืื ื ืื ืื ืืฉืืกืืืืช ืืจืืจืืช ืืฉ ืื 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})
ืืฆืืื ืืืกืฃ. ืฉืืื ืื ืืื ืฉืื ืชืืืจื ื ืืื ืืฆืจื ื ืืช ืืืืกืฃ, ืืื ืคืฉืื ืืชืื ื 'ืืื ืงืจื', ืขืฉืื ื ืืืกืคื, ืืืื ืื ื ืืืกืฃ.
ืืืื ืื ืื ื ืืืืืื ืืงืื ืืช ืื ืืืืกืคืื ืฉืื ื:
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})
ืื ืจืื ืื ืงืจื:
ืืคื ืฉืืชื ืืืื ืืจืืืช, ืืฉ ืื ื ืฉืืืช ื ืืกืคืื: ืืืช ะธ ืชืืืขืช, ืฉืืื ืืืืจืืจื.
ืืืื ื ืืกืืฃ ืขืื ืืื ืืื ืงืจื:
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:
ืืืขืชื, ืืืืื ืืืืจื ืืืืข ื ืื ืืืชืจ ืืืืกื ื ืชืื ื ืืจืืื: ืืืืจื ืืืืข ืืืกื ืื ืืื ืื?
ืืชืฉืืื ืืจืืจื - ืืืื ืื, ืืืืืืื ืืขืื ืืจืื ืืืช ืืืื. ืื ืื ืกืื ืฉ-KLADR ืืื ืืื ืืคืืจืฆืื ืืจืืกืืช. ืืืื ืื ืืชืืืื ืืืื ืืืชืืืืช, ืื ืืชื ืืืื ืืืืืืจ ืืื ืืืขืจื, ืืืืืื ืืืื ืืจืื ืืืชืจ ืงืืื. ืืื ืืื ืืงืจื ืืฉืชืืฉ ืขืืืจ 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}})
ืืฆืืืช ืืื ืืืฆืื ืืช ืืื ืืงืจื, ืฉืฉืืืชืืื ืืชืืืืื ืืืืชืืืช A ืื a:
db.unicorns.find({name: {$regex: "^[Aa]"}})
ืขืืฉืื ืชืฉืงืื ืืืคืืฉ ืืขืจื. ืฉืืื ืืก' 1: ืื ืชืคืืง ืืคืงืืื ืืื:
db.unicorns.find({loves:'apple'})
ื ืืื: ืื ืื ืฉืืืื ืชืคืืืื.
ืืคืงืืื ืืืื ืชืืืืจ ืจืง ืืช ื ืชืื ื ืืื ืงืจื ืืืืืืื ืจืง ืชืคืืืื ืืืืืืืื:
db.unicorns.find({loves:[ "apple", "watermelon" ]})
ืืขืื ืคืงืืื ืืืช:
db.unicorns.find({loves:[ "watermelon", "apple" ]})
ืืืงืจื ืฉืื ื ืื ืื ืืืืืจ ืืืื, ืฉืื ืืฉืขืืืจืื ืืขืจื ืืฉืืืื ืืช ืืืืื ื ืืจืืฉืื ืืจืืฉืื, ืืฉื ื ืืฉื ื ืืื'. ืืืืืจ, ืืืขืจื ืฆืจืื ืื ืืืชืืื ืืคื ืขืืื ืขืจืืื ืืื.
ืืืื ืื ื ืจืื ืืืคืืฉ ืืืขืจื ืืืืฆืขืืช ืืืืคืจืืืจ "OR".:
ืืืืืื ืืืื ืชืจืื ืื ื ืืคืฉ ืืืืฆืขืืช ืืืืคืจืืืจ $all. ืืืื ืืจืฆืฃ ืื ืืฉืื:
ืื ืื ืื ื ืืืืืื ืืืคืืฉ ืืคื ืืืื ืืขืจื:
ืืื ืื ืื ื ืจืฆื ืืืฆืื ืืขืจื ืฉืืืืื ืืืื ืืืื? ืืฉ ืืคืขืื ืืื $ ืืืคื, ืฉืืืชื ืืชื ืืืื ืืืชืื ืืืจืื ืืืจืืืื ืืืชืจ:
db.unicorns.find({$where: function() { return this.loves && (this.loves.length > 1) } })
ืืื, ืื ืืชื ืจืืฆื ืืืชืืื,
ืชืืื ืืช ืืกืื
ืืื ื ืกืชืจ ืืขื ืื ืืืจ ืืื ืืืืื ืขื ืืชืืื ืืช ืฉื ืืื ืื:
- find() ืืคืขืืืืช ืืืจืืช ืืื ื ืืืืืจืืช ื ืชืื ืื - ืื ืืืืืจืืช ืื ืฉื ืงืจื "ืกืื";
- ืืขืืืื ืฉืื ื ืจืืืื ืืช ืื ืชืื ืื ืืืืคืกืื ืืื ืขืืืืชื ืฉื ืืืชืืจืืื.
ืืงืืื db.unicorns.find ืืื ืกืืืจืืื, ืื ื ืืงืืืื ืืช ืืื ืืื:
ืื ื ืืืฉืืืื ืืืื ืืงืฉืืช
ืืฉ ืื ืืช ืืืืคืจืืืจ $in:
db.unicorns.find({weight: {$in: [650, 704]}})
ืขืืฉืื ืืืื ื ืืืจ ืขื ืขืืืื. ืืืืืื, ืืืื ื ืฉื ื ืืช ืืืฉืงื ืฉื ืื ืืงืจื Rooooodles:
db.unicorns.update({name: "Roooooodles"}, {weight: 2222})
ืืชืืฆืื ืืืขืฉืื ื, ืืืกืื ืืขืืืื ืืืืืืื, ืืจืง ืฉืื ืืืืืจ ืืื ืืืฉืืจ ืื:
ืืืืืจ, ืืืืจ ืืืืื ืฉืืืฉืืจ ืืืืืืืงื ืฉืื ื ืืื ืืืฉืงื 2222 ืืืืืื id.
ืืชื ืืืื ืืชืงื ืืช ืืืฆื ืืืืฆืขืืช $ืกื:
db.unicorns.update({_id: ObjectId("5da6ea4d9703b8be0089e6db")}, {$set: { "name" : "Roooooodles", "dob" : ISODate("1979-08-18T18:44:00Z"), "loves" : [ "apple" ], "gender" : "m", "vampires" : 99}})
ืื ืื ืืคืฉืจื ืืืืืื ืขืจืืื:
ืืืฉ ืืขืื - ืฉืืืื ืฉื ืขืืืื ืืืืกืคื:
ืื ื ืืื ืื ื ืขืฉื ืืืืจืช ืฉืื:
ื ืืชืจ ืืืืกืืฃ ืืื ืืืืื ืืืื ืืืื ะธ ืืืืืื:
ืขืืืชืื, ืื ืืื, ืื ืืชื ืจืืฆืื ืืืขืช ืืช ืืคืจืืื,
ืืงืืจ: www.habr.com