GRAPHS WITH MONGO - files.meetup.com Acyclic Graphs in MongoDB.pdfFriday, September 9, 2011. ONE AND...

Preview:

Citation preview

GRAPHS WITH MONGOSCOTT  MESSINGER

Friday, September 9, 2011

WHO AM I?

Friday, September 9, 2011

WHO AM I?

Friday, September 9, 2011

WHO AM I?

Friday, September 9, 2011

TREE STRUCTURES

awesome_nested_set  (left/right  columns)

ancestry  (materialized  path)

acts_as_tree  (parent_id)

Friday, September 9, 2011

ONE AND ONLY ONE PARENT

Friday, September 9, 2011

DIRECTED ACYCLIC GRAPHNODE CAN HAVE MULTIPLE PARENTS

Friday, September 9, 2011

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Friday, September 9, 2011

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Sub-­‐Unit  B

Sub-­‐Unit  C

DC:4th  Grade  Math

Unit  1Geometry

Sub-­‐Unit  A

Friday, September 9, 2011

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Sub-­‐Unit  B

Sub-­‐Unit  C

DC:4th  Grade  Math

Unit  1Geometry

Sub-­‐Unit  A

Multiple  Parents  :-­‐(

Sub-­‐Unit  A

Friday, September 9, 2011

MONGOMAPPER

class Unit include MongoMapper::Document key :children_ids, Array many :children, :in => :children_ids, :class_name => "Unit"end

Friday, September 9, 2011

MONGOMAPPER

class Unit include MongoMapper::Document key :children_ids, Array many :children, :in => :children_ids, :class_name => "Unit"end

# in a controller@unit = Unit.find(params[:id])

Friday, September 9, 2011

MONGOMAPPER

class Unit include MongoMapper::Document key :children_ids, Array many :children, :in => :children_ids, :class_name => "Unit"end

# in a controller@unit = Unit.find(params[:id])@parents = Unit.where(:children_ids => @unit.id).all

Friday, September 9, 2011

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Sub-­‐Unit  B

Sub-­‐Unit  C

DC:4th  Grade  Math

Unit  1Geometry

Sub-­‐Unit  ASub-­‐Unit  A

THE BREADCRUMB PROBLEM

Friday, September 9, 2011

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Sub-­‐Unit  B

Sub-­‐Unit  C

DC:4th  Grade  Math

Unit  1Geometry

Sub-­‐Unit  ASub-­‐Unit  A

THE BREADCRUMB PROBLEM

4th    Grade  Math      >      Unit  1:  Geometry      >      Sub-­‐Unit  C

Friday, September 9, 2011

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Sub-­‐Unit  B

Sub-­‐Unit  C

DC:4th  Grade  Math

Unit  1Geometry

Sub-­‐Unit  ASub-­‐Unit  A

THE BREADCRUMB PROBLEM

4th    Grade  Math      >      Unit  1:  Geometry      >      Sub-­‐Unit  C

Friday, September 9, 2011

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Sub-­‐Unit  B

Sub-­‐Unit  C

DC:4th  Grade  Math

Unit  1Geometry

Sub-­‐Unit  ASub-­‐Unit  A

THE BREADCRUMB PROBLEM

4th    Grade  Math      >      Unit  1:  Geometry      >      Sub-­‐Unit  C

Friday, September 9, 2011

MONGOMAPPER

Friday, September 9, 2011

MONGOMAPPER

class Unit include MongoMapper::Document key :children_ids, Array many :children, :in => :children_ids, :class_name => "Unit"

Friday, September 9, 2011

MONGOMAPPER

class Unit include MongoMapper::Document key :children_ids, Array many :children, :in => :children_ids, :class_name => "Unit"

key :course_ids, Array many :courses, :in => :course_ids, :class_name => "Course"end# in a controller@unit = Unit.find(params[:id])@course = Course.find(params[:course_id])

Friday, September 9, 2011

MONGOMAPPER

class Unit include MongoMapper::Document key :children_ids, Array many :children, :in => :children_ids, :class_name => "Unit"

key :course_ids, Array many :courses, :in => :course_ids, :class_name => "Course"end# in a controller@unit = Unit.find(params[:id])@course = Course.find(params[:course_id])

# to find a parent@parent = Unit.where(:children_ids => @unit.id, :course_ids => @course.id).first

Friday, September 9, 2011

MONGOMAPPER

class Unit include MongoMapper::Document key :children_ids, Array many :children, :in => :children_ids, :class_name => "Unit"

key :course_ids, Array many :courses, :in => :course_ids, :class_name => "Course"end# in a controller@unit = Unit.find(params[:id])@course = Course.find(params[:course_id])

# to find a parent@parent = Unit.where(:children_ids => @unit.id, :course_ids => @course.id).first

Friday, September 9, 2011

Sub-­‐Unit  A

Sub-­‐Unit  B

Sub-­‐Unit  C

Unit  1Geometry

Baltimore  City:4th  Grade  Math

Sub-­‐Unit  B

Sub-­‐Unit  C

DC:4th  Grade  Math

Unit  1Geometry

Sub-­‐Unit  ASub-­‐Unit  A

THE BREADCRUMB PROBLEM SOLVED

4th    Grade  Math      >      Unit  1:  Geometry      >      Sub-­‐Unit  C

Friday, September 9, 2011

LET’S REVIEW

Friday, September 9, 2011

LET’S REVIEW

Array  keys  

make  modeling  trees  simple

give  us  order  for  free

Friday, September 9, 2011

QUESTIONS?Scott  Messinger  -­‐  @scottmessinger

scott@commoncurriculum.com

Friday, September 9, 2011

Recommended