mongous 0.1.8 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/README.adoc +286 -48
  3. data/README.ja.adoc +288 -50
  4. data/lib/mongous/base.rb +45 -2
  5. data/lib/mongous/document.rb +75 -32
  6. data/lib/mongous/extention.rb +74 -55
  7. data/lib/mongous/filter.rb +316 -233
  8. data/lib/mongous/version.rb +1 -1
  9. data/mongous.gemspec +1 -1
  10. data/sample/connect_auto_0.rb +9 -0
  11. data/sample/declare_compact_1.rb +7 -9
  12. data/sample/declare_compact_2.rb +38 -0
  13. data/sample/declare_label_1.rb +10 -8
  14. data/sample/declare_ndex_1.rb +9 -7
  15. data/sample/declare_ndex_2.rb +10 -8
  16. data/sample/declare_strict_1.rb +14 -12
  17. data/sample/declare_strict_2.rb +5 -5
  18. data/sample/{multi_docs_1.rb → multi_collection_1.rb} +0 -2
  19. data/sample/multi_collection_2.rb +61 -0
  20. data/sample/multi_collection_3.rb +24 -0
  21. data/sample/query_basic_1.rb +8 -3
  22. data/sample/query_basic_2.rb +11 -6
  23. data/sample/query_basic_3.rb +2 -5
  24. data/sample/query_basic_4.rb +3 -6
  25. data/sample/query_basic_5.rb +2 -5
  26. data/sample/query_basic_6.rb +35 -22
  27. data/sample/query_detail_1.rb +3 -3
  28. data/sample/query_detail_2.rb +3 -3
  29. data/sample/query_detail_3.rb +5 -5
  30. data/sample/query_filter_1.rb +44 -0
  31. data/sample/query_filter_2.rb +48 -0
  32. data/sample/{query_super_1.rb → query_find_1.rb} +6 -6
  33. data/sample/query_select_1.rb +54 -0
  34. data/sample/query_skip_limit_1.rb +48 -0
  35. data/sample/query_skip_limit_2.rb +58 -0
  36. data/sample/query_sort_1.rb +43 -0
  37. data/sample/save_basic_1.rb +2 -7
  38. data/sample/save_basic_2.rb +2 -7
  39. data/sample/save_basic_3.rb +2 -7
  40. data/sample/save_detail_1.rb +7 -6
  41. data/sample/save_detail_2.rb +7 -6
  42. data/sample/save_detail_3.rb +11 -10
  43. data/sample/save_verify_1.rb +7 -6
  44. data/sample/save_verify_2.rb +0 -2
  45. data/sample/save_verify_3.rb +1 -3
  46. data/sample/save_verify_4.rb +0 -2
  47. data/sample/save_verify_5.rb +3 -5
  48. data/sample/save_verify_6.rb +3 -5
  49. data/sample/save_verify_7.rb +21 -0
  50. data/sample/update_basic_1.rb +9 -0
  51. data/sample/zap_basic_1.rb +1 -5
  52. data/sample/zap_basic_2.rb +2 -6
  53. data/sample/zap_basic_3.rb +2 -6
  54. data/sample/zbenchmark_search_1.rb +114 -0
  55. data/sample/zbenchmark_search_2.rb +114 -0
  56. data/sample/zbenchmark_search_3.rb +88 -0
  57. metadata +20 -12
  58. data/sample/multi_docs_2.rb +0 -58
  59. data/sample/query_basic_7.rb +0 -38
  60. data/sample/query_limit_1.rb +0 -44
  61. data/sample/query_order_1.rb +0 -49
  62. data/sample/query_projection_1.rb +0 -44
  63. data/sample/template_article.rb +0 -5
  64. data/sample/template_person.rb +0 -12
@@ -0,0 +1,21 @@
1
+
2
+ require "mongous"
3
+
4
+ class Book
5
+ include Mongous::Document
6
+
7
+ field :title, :must
8
+ field :price, Integer, (0..1_000_000)
9
+ end
10
+
11
+ begin
12
+ book = Book.new
13
+ book.title = "title price"
14
+ book.price = -1
15
+ book.save
16
+
17
+ rescue => e
18
+ p e.message
19
+
20
+ end
21
+
@@ -0,0 +1,9 @@
1
+
2
+ require "mongous"
3
+
4
+ Mongous.document! :Book
5
+
6
+ Book.where( title: /title/ ).each do |book|
7
+ book.price = (book.price || 50 ) * 2
8
+ book.save
9
+ end
@@ -1,11 +1,7 @@
1
1
 
2
2
  require "mongous"
3
3
 
4
- Mongous.connect!
5
-
6
- class Book
7
- include Mongous::Document
8
- end
4
+ Mongous.document! :Book
9
5
 
10
6
  Book.delete
11
7
 
@@ -1,11 +1,7 @@
1
1
 
2
2
  require "mongous"
3
3
 
4
- Mongous.connect!
4
+ Mongous.document! :Item
5
5
 
6
- class Book
7
- include Mongous::Document
8
- end
9
-
10
- Book.filter( title: "title 1" ).delete
6
+ Item.delete
11
7
 
@@ -1,11 +1,7 @@
1
1
 
2
2
  require "mongous"
3
3
 
4
- Mongous.connect!
4
+ Mongous.document! :Card
5
5
 
6
- class Book
7
- include Mongous::Document
8
- end
9
-
10
- Book.filter( title: /title/ ).delete
6
+ Card.delete
11
7
 
@@ -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 a integer without index" do
64
+ (0...COUNT).each do |i|
65
+ Card.where( i1: i ).first
66
+ end
67
+ end
68
+ bm.report "find a integer with index" do
69
+ (0...COUNT).each do |i|
70
+ Card.where( i2: i ).first
71
+ end
72
+ end
73
+ bm.report "find a float without index" do
74
+ (0...COUNT).each do |i|
75
+ Card.where( f1: i.to_f ).first
76
+ end
77
+ end
78
+ bm.report "find a float with index" do
79
+ (0...COUNT).each do |i|
80
+ Card.where( f2: i.to_f ).first
81
+ end
82
+ end
83
+ bm.report "find a string without index" do
84
+ (0...COUNT).each do |i|
85
+ Card.where( s1: i.to_s ).first
86
+ end
87
+ end
88
+ bm.report "find a string with index" do
89
+ (0...COUNT).each do |i|
90
+ Card.where( s2: i.to_s ).first
91
+ end
92
+ end
93
+ bm.report "find a date without index" do
94
+ (0...COUNT).each do |i|
95
+ Card.where( d1: D0 + i ).first
96
+ end
97
+ end
98
+ bm.report "find a date with index" do
99
+ (0...COUNT).each do |i|
100
+ Card.where( d2: D0 + i ).first
101
+ end
102
+ end
103
+ bm.report "find a time without index" do
104
+ (0...COUNT).each do |i|
105
+ Card.where( t1: T0 + i ).first
106
+ end
107
+ end
108
+ bm.report "find a time with index" do
109
+ (0...COUNT).each do |i|
110
+ Card.where( t2: T0 + i ).first
111
+ end
112
+ end
113
+ end
114
+
@@ -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,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongous
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - arimay
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-05 00:00:00.000000000 Z
11
+ date: 2020-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mongo
@@ -52,7 +52,7 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
- description: " Yet another lightweight mongo wrapper library. "
55
+ description: " Yet another mongo wrapper library. "
56
56
  email:
57
57
  - arima.yasuhiro@gmail.com
58
58
  executables: []
@@ -75,6 +75,7 @@ files:
75
75
  - lib/mongous/filter.rb
76
76
  - lib/mongous/version.rb
77
77
  - mongous.gemspec
78
+ - sample/connect_auto_0.rb
78
79
  - sample/connect_auto_1.rb
79
80
  - sample/connect_auto_2.rb
80
81
  - sample/connect_default_1.rb
@@ -85,27 +86,31 @@ files:
85
86
  - sample/connect_loadfile_2.rb
86
87
  - sample/connect_mongo.yml
87
88
  - sample/declare_compact_1.rb
89
+ - sample/declare_compact_2.rb
88
90
  - sample/declare_label_1.rb
89
91
  - sample/declare_ndex_1.rb
90
92
  - sample/declare_ndex_2.rb
91
93
  - sample/declare_strict_1.rb
92
94
  - sample/declare_strict_2.rb
93
- - sample/multi_docs_1.rb
94
- - sample/multi_docs_2.rb
95
+ - sample/multi_collection_1.rb
96
+ - sample/multi_collection_2.rb
97
+ - sample/multi_collection_3.rb
95
98
  - sample/query_basic_1.rb
96
99
  - sample/query_basic_2.rb
97
100
  - sample/query_basic_3.rb
98
101
  - sample/query_basic_4.rb
99
102
  - sample/query_basic_5.rb
100
103
  - sample/query_basic_6.rb
101
- - sample/query_basic_7.rb
102
104
  - sample/query_detail_1.rb
103
105
  - sample/query_detail_2.rb
104
106
  - sample/query_detail_3.rb
105
- - sample/query_limit_1.rb
106
- - sample/query_order_1.rb
107
- - sample/query_projection_1.rb
108
- - sample/query_super_1.rb
107
+ - sample/query_filter_1.rb
108
+ - sample/query_filter_2.rb
109
+ - sample/query_find_1.rb
110
+ - sample/query_select_1.rb
111
+ - sample/query_skip_limit_1.rb
112
+ - sample/query_skip_limit_2.rb
113
+ - sample/query_sort_1.rb
109
114
  - sample/save_basic_1.rb
110
115
  - sample/save_basic_2.rb
111
116
  - sample/save_basic_3.rb
@@ -118,11 +123,14 @@ files:
118
123
  - sample/save_verify_4.rb
119
124
  - sample/save_verify_5.rb
120
125
  - sample/save_verify_6.rb
121
- - sample/template_article.rb
122
- - sample/template_person.rb
126
+ - sample/save_verify_7.rb
127
+ - sample/update_basic_1.rb
123
128
  - sample/zap_basic_1.rb
124
129
  - sample/zap_basic_2.rb
125
130
  - sample/zap_basic_3.rb
131
+ - sample/zbenchmark_search_1.rb
132
+ - sample/zbenchmark_search_2.rb
133
+ - sample/zbenchmark_search_3.rb
126
134
  homepage: https://github.com/arimay/mongous
127
135
  licenses:
128
136
  - MIT