+ All Categories
Home > Documents > MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics...

MongoTalk/Voyageesug.org/data/ESUG2013/4-Thu/03-ESUG2013 - VoyageTutorial.pdf · MongoTalk basics...

Date post: 25-Jul-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
24
MongoTalk/Voyage by Nico and Esteban Thursday, September 12, 13
Transcript
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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

...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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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


Recommended