Skip to content

Instantly share code, notes, and snippets.

@mmlac
Last active December 10, 2015 01:19
Show Gist options
  • Save mmlac/4358102 to your computer and use it in GitHub Desktop.
Save mmlac/4358102 to your computer and use it in GitHub Desktop.
Mongoid: includes?
class Book
include Mongoid::Document
include Mongoid::Paranoia
field :sites, type: String
belongs_to :shelf
end
################################
### Create some data in IRB ###
################################
30.times{|i|
s = Shelf.create(genre: i.to_s)
100.times{|i|
Book.create(shelf: s, sites: "The not so Final Fantasy #{i}")
}
}
#######################################
### Or for convenience in one line: ###
#######################################
30.times{|i| s = Shelf.create(genre: i.to_s); 100.times{|i| Book.create(shelf: s, sites: "The not so Final Fantasy #{i}")} }
s = Shelf.includes(:books).all
s.each do |aa|
puts aa.books.first.sites
end
What I expect the result to be is
1. A query to get all shelves
2. A query to get all books in the shelves
3. Nothing more when I access the books
The results I get are the following (using NewRelic dev mode)
Timestamp Duration SQL
0.032 1 ms View Source
COMMAND database=admin command={:ismaster=>1}
0.033 1 ms View Source
QUERY database=cb-migrate-test collection=users selector={"deleted_at"=>nil, "_id"=>"506df1965e40061200000019"} flags=[] limit=0 skip=0 fields=nil
0.061 1 ms View Source
QUERY database=cb-migrate-test collection=shelves selector={"deleted_at"=>nil} flags=[] limit=0 skip=0 fields=nil
0.131 3 ms View Source
QUERY database=cb-migrate-test collection=books selector={"deleted_at"=>nil, "shelf_id"=>{"$in"=>["50d572f65f766a014e000001", "50d573d15f766a014e000066", "50d573d15f766a014e0000cb", "50d573d15f766a014e000130", "50d573d15f766a014e000195", "50d573d15f766a014e0001fa", "50d573d25f766a014e00025f", "50d573d25f766a014e0002c4", "50d573d25f766a014e000329", "50d573d25f766a014e00038e", "50d573d25f766a014e0003f3", "50d573d25f766a014e000458", "50d573d25f766a014e0004bd", "50d573d25f766a014e000522", "50d573d25f766a014e000587", "50d573d25f766a014e0005ec", "50d573d25f766a014e000651", "50d573d25f766a014e0006b6", "50d573d25f766a014e00071b", "50d573d35f766a014e000780", "50d573d35f766a014e0007e5", "50d573d35f766a014e00084a", "50d573d35f766a014e0008af", "50d573d35f766a014e000914", "50d573d35f766a014e000979", "50d573d35f766a014e0009de", "50d573d35f766a014e000a43", "50d573d35f766a014e000aa8", "50d573d35f766a014e000b0d", "50d573d35f766a014e000b72", "50d573d35f766a014e000bd7"]}} flags=[] limit=0 skip=0 fields=nil
0.136 32 ms View Source
GET_MORE database=cb-migrate-test collection=books limit=0 cursor_id=2446010863602927448
0.282 1 ms View Source
QUERY database=cb-migrate-test collection=books selector={"$query"=>{"deleted_at"=>nil, "shelf_id"=>"50d572f65f766a014e000001"}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 fields=nil
0.283 1 ms View Source
QUERY database=cb-migrate-test collection=books selector={"$query"=>{"deleted_at"=>nil, "shelf_id"=>"50d572f65f766a014e000001"}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 fields=nil
0.284 1 ms View Source
QUERY database=cb-migrate-test collection=books selector={"$query"=>{"deleted_at"=>nil, "shelf_id"=>"50d573d15f766a014e000066"}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 fields=nil
0.286 1 ms View Source
QUERY database=cb-migrate-test collection=books selector={"$query"=>{"deleted_at"=>nil, "shelf_id"=>"50d573d15f766a014e000066"}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 fields=nil
0.287 1 ms View Source
QUERY database=cb-migrate-test collection=books selector={"$query"=>{"deleted_at"=>nil, "shelf_id"=>"50d573d15f766a014e0000cb"}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 fields=nil
0.289 2 ms View Source
QUERY database=cb-migrate-test collection=books selector={"$query"=>{"deleted_at"=>nil, "shelf_id"=>"50d573d15f766a014e0000cb"}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 fields=nil
0.292 4 ms View Source
QUERY database=cb-migrate-test collection=books selector={"$query"=>{"deleted_at"=>nil, "shelf_id"=>"50d573d15f766a014e000130"}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 fields=nil
0.296 2 ms View Source
QUERY database=cb-migrate-test collection=books selector={"$query"=>{"deleted_at"=>nil, "shelf_id"=>"50d573d15f766a014e000130"}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 fields=nil
0.298 2 ms View Source
QUERY database=cb-migrate-test collection=books selector={"$query"=>{"deleted_at"=>nil, "shelf_id"=>"50d573d15f766a014e000195"}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 fields=nil
0.301 2 ms View Source
QUERY database=cb-migrate-test collection=books selector={"$query"=>{"deleted_at"=>nil, "shelf_id"=>"50d573d15f766a014e000195"}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 fields=nil
0.303 3 ms View Source
QUERY database=cb-migrate-test collection=books selector={"$query"=>{"deleted_at"=>nil, "shelf_id"=>"50d573d15f766a014e0001fa"}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 fields=nil
0.307 3 ms View Source
.
.
.
You get the idea.
class Shelf
include Mongoid::Document
include Mongoid::Paranoia
field :genre, type: String
has_many :books
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment