mongous 0.2.0 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +73 -0
  3. data/README.adoc +191 -38
  4. data/README.ja.adoc +192 -39
  5. data/Rakefile +8 -8
  6. data/lib/mongous/base.rb +52 -8
  7. data/lib/mongous/document.rb +36 -13
  8. data/lib/mongous/extention.rb +51 -39
  9. data/lib/mongous/filter.rb +316 -227
  10. data/lib/mongous/version.rb +1 -1
  11. data/mongous.gemspec +4 -4
  12. data/sample/connect_auto_0.rb +9 -0
  13. data/sample/declare_compact_1.rb +6 -8
  14. data/sample/declare_compact_2.rb +38 -0
  15. data/sample/declare_label_1.rb +9 -7
  16. data/sample/declare_ndex_1.rb +8 -6
  17. data/sample/declare_ndex_2.rb +9 -7
  18. data/sample/declare_strict_1.rb +9 -9
  19. data/sample/declare_strict_2.rb +4 -5
  20. data/sample/multi_collection_1.rb +0 -2
  21. data/sample/multi_collection_2.rb +5 -5
  22. data/sample/multi_collection_3.rb +24 -0
  23. data/sample/query_basic_1.rb +8 -2
  24. data/sample/query_basic_2.rb +8 -2
  25. data/sample/query_basic_3.rb +0 -2
  26. data/sample/query_basic_4.rb +3 -5
  27. data/sample/query_basic_5.rb +0 -2
  28. data/sample/query_basic_6.rb +56 -0
  29. data/sample/query_detail_1.rb +3 -3
  30. data/sample/query_detail_2.rb +3 -3
  31. data/sample/query_detail_3.rb +4 -5
  32. data/sample/query_filter_1.rb +1 -3
  33. data/sample/query_filter_2.rb +2 -4
  34. data/sample/query_find_1.rb +6 -5
  35. data/sample/query_select_1.rb +54 -0
  36. data/sample/query_skip_limit_1.rb +25 -14
  37. data/sample/query_skip_limit_2.rb +20 -11
  38. data/sample/query_sort_1.rb +43 -0
  39. data/sample/save_basic_1.rb +2 -6
  40. data/sample/save_basic_2.rb +2 -6
  41. data/sample/save_basic_3.rb +2 -6
  42. data/sample/save_detail_1.rb +3 -3
  43. data/sample/save_detail_2.rb +3 -3
  44. data/sample/save_detail_3.rb +10 -10
  45. data/sample/save_verify_1.rb +6 -6
  46. data/sample/save_verify_2.rb +0 -2
  47. data/sample/save_verify_3.rb +0 -2
  48. data/sample/save_verify_4.rb +0 -2
  49. data/sample/save_verify_5.rb +3 -5
  50. data/sample/save_verify_6.rb +3 -5
  51. data/sample/save_verify_7.rb +21 -0
  52. data/sample/update_basic_1.rb +9 -0
  53. data/sample/zap_basic_1.rb +1 -5
  54. data/sample/zap_basic_2.rb +2 -6
  55. data/sample/zap_basic_3.rb +2 -6
  56. data/sample/zbenchmark_search_1.rb +114 -0
  57. data/sample/zbenchmark_search_2.rb +114 -0
  58. data/sample/zbenchmark_search_3.rb +88 -0
  59. metadata +31 -21
  60. data/sample/query_projection_1.rb +0 -41
  61. data/sample/query_sort_order_1.rb +0 -46
@@ -0,0 +1,114 @@
1
+
2
+ require "mongous"
3
+
4
+ class Card
5
+ include Mongous::Document
6
+ field :i1, Integer
7
+ field :i2, Integer
8
+ field :f1, Float
9
+ field :f2, Float
10
+ field :s1, String
11
+ field :s2, String
12
+ field :d1, Date
13
+ field :d2, Date
14
+ field :t1, Time
15
+ field :t2, Time
16
+ field :r1, Float
17
+ field :r2, Float
18
+
19
+ index :i2, unique: true
20
+ index :f2, unique: true
21
+ index :s2, unique: true
22
+ index :d2, unique: true
23
+ index :t2, unique: true
24
+ index :r2
25
+ end
26
+
27
+ require "benchmark"
28
+ require "date"
29
+
30
+ COUNT = 1000
31
+
32
+ D0 = Date.parse( "2020-01-01" )
33
+ T0 = D0.to_time
34
+
35
+ Benchmark.bm 32 do |bm|
36
+ if COUNT != Card.count
37
+ Card.delete
38
+ bm.report "create #{COUNT}" do
39
+ (0...COUNT).each do |i|
40
+ f = i.to_f
41
+ s = i.to_s
42
+ d = D0 + i
43
+ t = T0 + i
44
+ r = rand
45
+ card = Card.create(
46
+ i1: i,
47
+ i2: i,
48
+ f1: f,
49
+ f2: f,
50
+ s1: s,
51
+ s2: s,
52
+ d1: d,
53
+ d2: d,
54
+ t1: t,
55
+ t2: t,
56
+ r1: r,
57
+ r2: r,
58
+ )
59
+ end
60
+ end
61
+ end
62
+
63
+ bm.report "find range integer without index" do
64
+ (0...COUNT).each do |i|
65
+ Card.where( i1: ( i ... (i+10) ) ).all
66
+ end
67
+ end
68
+ bm.report "find range integer with index" do
69
+ (0...COUNT).each do |i|
70
+ Card.where( i2: ( i ... (i+10) ) ).all
71
+ end
72
+ end
73
+ bm.report "find range float without index" do
74
+ (0...COUNT).each do |i|
75
+ Card.where( f1: ( i.to_f ... (i+10).to_f ) ).all
76
+ end
77
+ end
78
+ bm.report "find range float with index" do
79
+ (0...COUNT).each do |i|
80
+ Card.where( f2: ( i.to_f ... (i+10).to_f ) ).all
81
+ end
82
+ end
83
+ bm.report "find range string without index" do
84
+ (0...COUNT).each do |i|
85
+ Card.where( s1: ( i.to_s ... (i+10).to_s ) ).all
86
+ end
87
+ end
88
+ bm.report "find range string with index" do
89
+ (0...COUNT).each do |i|
90
+ Card.where( s2: ( i.to_s ... (i+10).to_s ) ).all
91
+ end
92
+ end
93
+ bm.report "find range date without index" do
94
+ (0...COUNT).each do |i|
95
+ Card.where( d1: ( (D0 + i) ... (D0 + i + 10) ) ).all
96
+ end
97
+ end
98
+ bm.report "find range date with index" do
99
+ (0...COUNT).each do |i|
100
+ Card.where( d2: ( (D0 + i) ... (D0 + i + 10) ) ).all
101
+ end
102
+ end
103
+ bm.report "find range time without index" do
104
+ (0...COUNT).each do |i|
105
+ Card.where( t1: ( (T0 + i) ... (T0 + i + 10) ) ).all
106
+ end
107
+ end
108
+ bm.report "find range time with index" do
109
+ (0...COUNT).each do |i|
110
+ Card.where( t2: ( (T0 + i) ... (T0 + i + 10) ) ).all
111
+ end
112
+ end
113
+ end
114
+
@@ -0,0 +1,88 @@
1
+
2
+ require "mongous"
3
+
4
+ class Plate
5
+ include Mongous::Document
6
+ field :i1, Integer
7
+ field :i2, Integer
8
+ field :f1, Float
9
+ field :f2, Float
10
+ field :s1, String
11
+ field :s2, String
12
+ field :d1, Date
13
+ field :d2, Date
14
+ field :t1, Time
15
+ field :t2, Time
16
+ field :r1, Float
17
+ field :r2, Float
18
+
19
+ index :i2, unique: true
20
+ index :f2, unique: true
21
+ index :s2, unique: true
22
+ index :d2, unique: true
23
+ index :t2, unique: true
24
+ index :r2
25
+ end
26
+
27
+ require "benchmark"
28
+ require "date"
29
+
30
+ COUNT = 100000
31
+
32
+ D0 = Date.parse( "2020-01-01" )
33
+ T0 = D0.to_time
34
+
35
+ Benchmark.bm 40 do |bm|
36
+ if COUNT != Plate.count
37
+ Plate.delete
38
+ bm.report "create #{COUNT}" do
39
+ (0...COUNT).each do |i|
40
+ f = i.to_f
41
+ s = i.to_s
42
+ d = D0 + i
43
+ t = T0 + i
44
+ r = rand
45
+ card = Plate.create(
46
+ i1: i,
47
+ i2: i,
48
+ f1: f,
49
+ f2: f,
50
+ s1: s,
51
+ s2: s,
52
+ d1: d,
53
+ d2: d,
54
+ t1: t,
55
+ t2: t,
56
+ r1: r,
57
+ r2: r,
58
+ )
59
+ end
60
+ end
61
+ end
62
+
63
+ bm.report "first, order by asc without index" do
64
+ Plate.sort( r1: 1 ).first
65
+ end
66
+ bm.report "first, order by desc without index" do
67
+ Plate.sort( r1: -1 ).first
68
+ end
69
+ bm.report "top 10, order by asc without index" do
70
+ Plate.sort( r1: 1 )[0,10].all
71
+ end
72
+ bm.report "top 10, order by desc without index" do
73
+ Plate.sort( r1: -1 )[0,10].all
74
+ end
75
+ bm.report "first, order by asc with index" do
76
+ Plate.sort( r2: 1 ).first
77
+ end
78
+ bm.report "first, order by desc with index" do
79
+ Plate.sort( r2: -1 ).first
80
+ end
81
+ bm.report "top 10, order by asc with index" do
82
+ Plate.sort( r2: 1 )[0,10].all
83
+ end
84
+ bm.report "top 10, order by desc with index" do
85
+ Plate.sort( r2: -1 )[0,10].all
86
+ end
87
+ end
88
+
metadata CHANGED
@@ -1,58 +1,58 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongous
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - arimay
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-06 00:00:00.000000000 Z
11
+ date: 2021-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mongo
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.13'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '2.13'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '12.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '12.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
55
- description: " Yet another lightweight mongo wrapper library. "
54
+ version: '0'
55
+ description: " Yet another mongo wrapper library. "
56
56
  email:
57
57
  - arima.yasuhiro@gmail.com
58
58
  executables: []
@@ -61,6 +61,7 @@ extra_rdoc_files: []
61
61
  files:
62
62
  - ".gitignore"
63
63
  - ".rspec"
64
+ - ".rubocop.yml"
64
65
  - ".travis.yml"
65
66
  - Gemfile
66
67
  - README.adoc
@@ -75,6 +76,7 @@ files:
75
76
  - lib/mongous/filter.rb
76
77
  - lib/mongous/version.rb
77
78
  - mongous.gemspec
79
+ - sample/connect_auto_0.rb
78
80
  - sample/connect_auto_1.rb
79
81
  - sample/connect_auto_2.rb
80
82
  - sample/connect_default_1.rb
@@ -85,6 +87,7 @@ files:
85
87
  - sample/connect_loadfile_2.rb
86
88
  - sample/connect_mongo.yml
87
89
  - sample/declare_compact_1.rb
90
+ - sample/declare_compact_2.rb
88
91
  - sample/declare_label_1.rb
89
92
  - sample/declare_ndex_1.rb
90
93
  - sample/declare_ndex_2.rb
@@ -92,21 +95,23 @@ files:
92
95
  - sample/declare_strict_2.rb
93
96
  - sample/multi_collection_1.rb
94
97
  - sample/multi_collection_2.rb
98
+ - sample/multi_collection_3.rb
95
99
  - sample/query_basic_1.rb
96
100
  - sample/query_basic_2.rb
97
101
  - sample/query_basic_3.rb
98
102
  - sample/query_basic_4.rb
99
103
  - sample/query_basic_5.rb
104
+ - sample/query_basic_6.rb
100
105
  - sample/query_detail_1.rb
101
106
  - sample/query_detail_2.rb
102
107
  - sample/query_detail_3.rb
103
108
  - sample/query_filter_1.rb
104
109
  - sample/query_filter_2.rb
105
110
  - sample/query_find_1.rb
106
- - sample/query_projection_1.rb
111
+ - sample/query_select_1.rb
107
112
  - sample/query_skip_limit_1.rb
108
113
  - sample/query_skip_limit_2.rb
109
- - sample/query_sort_order_1.rb
114
+ - sample/query_sort_1.rb
110
115
  - sample/save_basic_1.rb
111
116
  - sample/save_basic_2.rb
112
117
  - sample/save_basic_3.rb
@@ -119,14 +124,19 @@ files:
119
124
  - sample/save_verify_4.rb
120
125
  - sample/save_verify_5.rb
121
126
  - sample/save_verify_6.rb
127
+ - sample/save_verify_7.rb
128
+ - sample/update_basic_1.rb
122
129
  - sample/zap_basic_1.rb
123
130
  - sample/zap_basic_2.rb
124
131
  - sample/zap_basic_3.rb
132
+ - sample/zbenchmark_search_1.rb
133
+ - sample/zbenchmark_search_2.rb
134
+ - sample/zbenchmark_search_3.rb
125
135
  homepage: https://github.com/arimay/mongous
126
136
  licenses:
127
137
  - MIT
128
138
  metadata: {}
129
- post_install_message:
139
+ post_install_message:
130
140
  rdoc_options: []
131
141
  require_paths:
132
142
  - lib
@@ -141,8 +151,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
151
  - !ruby/object:Gem::Version
142
152
  version: '0'
143
153
  requirements: []
144
- rubygems_version: 3.1.4
145
- signing_key:
154
+ rubygems_version: 3.2.3
155
+ signing_key:
146
156
  specification_version: 4
147
157
  summary: Mongo wrapper library.
148
158
  test_files: []
@@ -1,41 +0,0 @@
1
-
2
- require "mongous"
3
-
4
- Mongous.connect!
5
-
6
- class Label
7
- include Mongous::Document
8
- end
9
-
10
- (0...10).each do |n|
11
- unless Label.where( n: n ).first
12
- Label.create( n: n, tag: [0x40 + n].pack("C") )
13
- end
14
- end
15
- puts
16
-
17
- Label.each do |label|
18
- p label
19
- end
20
- puts
21
-
22
- Label.where.projection( tag: 1 ).each do |label|
23
- p label
24
- end
25
- puts
26
-
27
- Label.where.projection( _id: 0, n: 1 ).each do |label|
28
- p label
29
- end
30
- puts
31
-
32
- Label.where.select( _id: 0, n: 1, tag: 1 ).each do |label|
33
- p label
34
- end
35
- puts
36
-
37
- Label.where( n: [0,2,4,6,8] ).select( _id: 0, n: 1, tag: 1 ).each do |label|
38
- p label
39
- end
40
- puts
41
-
@@ -1,46 +0,0 @@
1
-
2
- require "mongous"
3
-
4
- Mongous.connect!
5
-
6
- class Item
7
- include Mongous::Document
8
- end
9
-
10
- (0...10).each do |n|
11
- unless Item.where( n: n ).first
12
- Item.create( n: n )
13
- end
14
- end
15
- puts
16
-
17
- Item.each do |item|
18
- p item
19
- end
20
- puts
21
-
22
- Item.where.sort(n: 1).each do |item|
23
- p item
24
- end
25
- puts
26
-
27
- Item.where.sort(n: -1).each do |item|
28
- p item
29
- end
30
- puts
31
-
32
- Item.where.order(n: -1).each do |item|
33
- p item
34
- end
35
- puts
36
-
37
- Item.where( n: (3...8) ).order(n: -1).each do |item|
38
- p item
39
- end
40
- puts
41
-
42
- Item.where( n: [0,2,4,6,8] ).order(n: -1).each do |item|
43
- p item
44
- end
45
- puts
46
-