MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics...
Transcript of MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics...
![Page 1: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/1.jpg)
MongoTalk/Voyageby Nico and Esteban
Thursday, September 12, 13
![Page 2: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/2.jpg)
Pre-requisites
• MongoDB installed and running
• Pharo 2.0
Thursday, September 12, 13
![Page 3: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/3.jpg)
Getting MongoTalk
Gofer itsmalltalkhubUser: ‘MongoTalkTeam’ project: ‘mongotalk’;configurationOf: ‘MongoTalk’;load.
ConfigurationOfMongoTalk load.
Thursday, September 12, 13
![Page 4: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/4.jpg)
What is Mongo?
• NoSQL database
• Opensource
• Document oriented
• Powerful query language
Thursday, September 12, 13
![Page 5: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/5.jpg)
MongoTalk basics
• MongoTalk is a driver for Mongo
• JSON/BSON (dictionaries)
• Mongo databases, collections and documents
Thursday, September 12, 13
![Page 6: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/6.jpg)
Let’s play with it!
• Creating a database
• Creating a collection
• Manipulating some documents
Thursday, September 12, 13
![Page 7: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/7.jpg)
Databases and collections
| mongo db users |
mongo := Mongo default open.
“db is created on the fly”db := mongo databaseNamed: ‘esug’.
“Same goes for collections”users := db addCollection: ‘users’.
Thursday, September 12, 13
![Page 8: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/8.jpg)
Insert/Update/Deleteusers add: {
‘name’ -> ‘nico’. ‘age’ -> 27} asDictionary.
users update: { ‘name’ -> ‘nico’ } asDictionarywith: {
‘name’ -> ‘nico’.‘age’ -> 28 } asDictionary.
users delete: {‘name’ -> ‘nico’ } asDictionary.
Thursday, September 12, 13
![Page 9: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/9.jpg)
Simple queries
“Use the traditional collection enumerating methods, with dictionaries”
users select: {‘name’ -> ‘nico’} asDictionary.users detect: {‘age’ -> 28} asDictionary.
Thursday, September 12, 13
![Page 10: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/10.jpg)
Limit, offset, order
users select: {‘name’ -> ‘nico’} asDictionarylimit: 5offset: 10order: {‘age’ -> 1} asDictionary
Thursday, September 12, 13
![Page 11: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/11.jpg)
MongoQueries
users select: [ :each | each name = ‘nico’ ].
users detect: [ :each |(each name = ‘nico’) & (each age > 25) ]
Thursday, September 12, 13
![Page 12: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/12.jpg)
...Voyage
Thursday, September 12, 13
![Page 13: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/13.jpg)
Install
Gofer itsmalltalkhubUser: ‘estebanlm’ project: ‘Voyage’;configurationOf: ‘VoyageMongo’;load.
ConfigurationOfVoyageMongo load.
Thursday, September 12, 13
![Page 14: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/14.jpg)
Singleton vs. Instanced
| repository |
repository := VOMongoRepository host: ‘localhost’database: ‘esug’.
repository enableSingleton.
Thursday, September 12, 13
![Page 15: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/15.jpg)
Basic operation| user |
user := User new name: ‘You’; save.
user age: ‘shhh’.user save.
user remove.
Thursday, September 12, 13
![Page 16: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/16.jpg)
Querying (1)
User selectAll.User selectOne: [ :each | each name = ‘you’ ].User selectMany: [ :each | each name = ‘you’ ].
Thursday, September 12, 13
![Page 17: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/17.jpg)
Querying (2)
User selectOne: { #name -> ‘you’ } asDictionary.
User selectMany: { #name -> ‘you’ } asDictionary.
Thursday, September 12, 13
![Page 18: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/18.jpg)
Querying (3)
User selectMany: { #name -> ‘you’ } asDictionarysortBy: { #name -> VOOrder ascending }limit: 10offset: 10.
Thursday, September 12, 13
![Page 19: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/19.jpg)
Querying (4)
User selectMany: {
#name -> {‘$regex’ -> ‘^y.\*’.‘$options’ -> ‘i’ } asDictionary } asDictionary
sortBy: { #name -> VOOrder ascending }limit: 10offset: 10.
Thursday, September 12, 13
![Page 20: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/20.jpg)
References• Embedded objects
• Regular references
• Cyclic
Thursday, September 12, 13
![Page 21: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/21.jpg)
Customize (1)
User class>>#mongoContainer<mongoContainer>
^ VOMongoContainer new collectionName: ‘users’;kind: User;enableMissingContent;yourself
Thursday, September 12, 13
![Page 22: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/22.jpg)
Customize (2)
User class>>#mongoName<mongoDescription>
^ VOMongoToOneDescription new attributeName: ‘name’;beLazy;yourself.
Thursday, September 12, 13
![Page 23: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/23.jpg)
Customize (3)User class>>#mongoGroups
<mongoDescription>
^ VOMongoToManyDescription new attributeName: ‘groups’;beEager;kind: Group;kindCollection: Set;convertNullTo: [ MissingGroup new ];yourself.
Thursday, September 12, 13
![Page 24: MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics • MongoTalk is a driver for Mongo • JSON/BSON (dictionaries) • Mongo databases,](https://reader034.fdocuments.net/reader034/viewer/2022050309/5f710d79f5f7cb56af1dccc6/html5/thumbnails/24.jpg)
Customize (4)
User class>>#mongoName<mongoDescription>
^ VOMongoToOneDescription new accessor: (MAPluggableAccessor
read: [ :user | user nameForPersist ]write: [ :user :v | user name: v ]);
yourself.
Thursday, September 12, 13