mongodb-mongo 0.5.3 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +6 -6
- data/bin/run_test_script +4 -0
- data/bin/standard_benchmark +49 -0
- data/examples/admin.rb +41 -0
- data/examples/benchmarks.rb +6 -2
- data/examples/capped.rb +23 -0
- data/examples/cursor.rb +47 -0
- data/examples/gridfs.rb +87 -0
- data/examples/info.rb +30 -0
- data/examples/queries.rb +69 -0
- data/examples/strict.rb +34 -0
- data/examples/types.rb +40 -0
- data/lib/mongo/collection.rb +10 -2
- data/lib/mongo/cursor.rb +5 -0
- data/lib/mongo/db.rb +2 -0
- data/lib/mongo/gridfs/chunk.rb +0 -2
- data/lib/mongo/gridfs/grid_store.rb +10 -10
- data/lib/mongo/message/query_message.rb +1 -1
- data/lib/mongo/query.rb +1 -0
- data/lib/mongo/types/objectid.rb +2 -2
- data/lib/mongo/util/bson.rb +4 -4
- data/mongo-ruby-driver.gemspec +77 -58
- data/tests/mongo-qa/admin +26 -0
- data/tests/mongo-qa/capped +5 -0
- data/tests/mongo-qa/count1 +8 -0
- data/tests/mongo-qa/dbs +22 -0
- data/tests/mongo-qa/find +4 -0
- data/tests/mongo-qa/find1 +15 -0
- data/tests/mongo-qa/indices +46 -0
- data/tests/mongo-qa/remove +18 -0
- data/tests/mongo-qa/stress1 +35 -0
- data/tests/mongo-qa/test1 +5 -1
- data/tests/mongo-qa/update +18 -0
- data/tests/test_db.rb +2 -2
- data/tests/test_db_api.rb +12 -0
- data/tests/test_objectid.rb +8 -8
- metadata +21 -7
- data/tests/mongo-qa/circular +0 -16
data/tests/mongo-qa/count1
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
require File.join(File.dirname(__FILE__), '_common.rb')
|
|
4
4
|
db = Mongo.new(DEFAULT_HOST, DEFAULT_PORT).db(DEFAULT_DB)
|
|
5
5
|
|
|
6
|
+
if $DEBUG
|
|
7
|
+
3.times { |i| db.drop_collection("test#{i+1}") }
|
|
8
|
+
db.create_collection('test1')
|
|
9
|
+
db.collection('test2').insert({:name => 'a'})
|
|
10
|
+
c = db.collection('test3')
|
|
11
|
+
100.times { |i| c.insert(:i => i, :foo => 'bar') }
|
|
12
|
+
end
|
|
13
|
+
|
|
6
14
|
puts db.collection('test1').count
|
|
7
15
|
puts db.collection('test2').count
|
|
8
16
|
puts db.collection('test3').count('i' => 'a')
|
data/tests/mongo-qa/dbs
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require File.join(File.dirname(__FILE__), '_common.rb')
|
|
4
|
+
db = Mongo.new(DEFAULT_HOST, DEFAULT_PORT).db(DEFAULT_DB)
|
|
5
|
+
|
|
6
|
+
if $DEBUG
|
|
7
|
+
3.times { |i| db.drop_collection("dbs_#{i+1}") }
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def print_dbs_names(db)
|
|
11
|
+
db.collection_names.select{ |n| n =~ /\.dbs/ }.sort.each { |name|
|
|
12
|
+
puts name.sub(/^#{db.name}\./, '')
|
|
13
|
+
}
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
db.collection('dbs_1').insert('foo' => 'bar')
|
|
17
|
+
db.collection('dbs_2').insert('psi' => 'phi')
|
|
18
|
+
puts db.name
|
|
19
|
+
print_dbs_names(db)
|
|
20
|
+
db.drop_collection('dbs_1')
|
|
21
|
+
db.create_collection('dbs_3')
|
|
22
|
+
print_dbs_names(db)
|
data/tests/mongo-qa/find
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require File.join(File.dirname(__FILE__), '_common.rb')
|
|
4
|
+
db = Mongo.new(DEFAULT_HOST, DEFAULT_PORT).db(DEFAULT_DB)
|
|
5
|
+
|
|
6
|
+
if $DEBUG
|
|
7
|
+
db.drop_collection('c')
|
|
8
|
+
c = db.collection('c')
|
|
9
|
+
(5..15).each { |i| c.insert(:x => 0, :y => i, :z => (i+64).chr) }
|
|
10
|
+
(1..50).each { |i| c.insert(:x => 1, :y => i, :z => (i+64).chr) }
|
|
11
|
+
(5..15).each { |i| c.insert(:x => 2, :y => i, :z => (i+64).chr) }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
cursor = db.collection('c').find({'x' => 1}, :sort => 'y', :offset => 20, :limit => 10)
|
|
15
|
+
cursor.each { |row| puts row['z'] }
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require File.join(File.dirname(__FILE__), '_common.rb')
|
|
4
|
+
db = Mongo.new(DEFAULT_HOST, DEFAULT_PORT).db(DEFAULT_DB)
|
|
5
|
+
x = db.collection('x')
|
|
6
|
+
y = db.collection('y')
|
|
7
|
+
|
|
8
|
+
def sorted_index_info(c)
|
|
9
|
+
c.index_information.sort { |a,b| a[:name] <=> b[:name] }
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def sorted_info_keys(info)
|
|
13
|
+
info[:keys].keys.sort.collect { |key| "#{key}_1" }.join("_")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def check_keys(c, expected)
|
|
17
|
+
keys = sorted_index_info(c).collect {|info| sorted_info_keys(info)}
|
|
18
|
+
if keys == expected
|
|
19
|
+
''
|
|
20
|
+
else
|
|
21
|
+
"#{c.name} indices should start out #{expected.inspect} but is #{keys.inspect}"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
if $DEBUG
|
|
26
|
+
x.drop # also drops indexes
|
|
27
|
+
x.insert('field1' => 'f1', 'field2' => 'f2')
|
|
28
|
+
x.create_index('field1_1', 'field1')
|
|
29
|
+
x.create_index('field2_1', 'field2')
|
|
30
|
+
y.drop
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# There should only be two indices on x, and none on y. We raise an error if
|
|
34
|
+
# the preconditions are not met. (They were not, on our testing harness, for a
|
|
35
|
+
# while due to Mongo behavior.)
|
|
36
|
+
err = []
|
|
37
|
+
err << check_keys(x, ['field1_1', 'field2_1'])
|
|
38
|
+
err << check_keys(y, [])
|
|
39
|
+
raise "\n#{err.join("\n")}" unless err == ['', '']
|
|
40
|
+
|
|
41
|
+
x.drop_index('field1_1')
|
|
42
|
+
sorted_index_info(x).each { |info| puts sorted_info_keys(info) }
|
|
43
|
+
|
|
44
|
+
y.create_index('abc', ['a', 'b', 'c'])
|
|
45
|
+
y.create_index('d', ['d'])
|
|
46
|
+
sorted_index_info(y).each { |info| puts sorted_info_keys(info) }
|
data/tests/mongo-qa/remove
CHANGED
|
@@ -3,5 +3,23 @@
|
|
|
3
3
|
require File.join(File.dirname(__FILE__), '_common.rb')
|
|
4
4
|
db = Mongo.new(DEFAULT_HOST, DEFAULT_PORT).db(DEFAULT_DB)
|
|
5
5
|
|
|
6
|
+
if $DEBUG
|
|
7
|
+
c = db.collection('remove1')
|
|
8
|
+
c.clear
|
|
9
|
+
50.times { |i| c.insert(:a => i) }
|
|
10
|
+
c = db.collection('remove2')
|
|
11
|
+
c.clear
|
|
12
|
+
c.insert(:a => 3, :b => 1)
|
|
13
|
+
c.insert(:a => 3, :b => 3)
|
|
14
|
+
c.insert(:a => 2, :b => 3)
|
|
15
|
+
c.insert(:b => 3)
|
|
16
|
+
end
|
|
17
|
+
|
|
6
18
|
db.collection('remove1').clear
|
|
7
19
|
db.collection('remove2').remove('a' => 3)
|
|
20
|
+
|
|
21
|
+
if $DEBUG
|
|
22
|
+
puts "remove1 count = #{db.collection('remove1').count}"
|
|
23
|
+
puts "remove2 count = #{db.collection('remove2').count}"
|
|
24
|
+
db.collection('remove2').find.each { |row| puts row.inspect }
|
|
25
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
LONG_STRING = "lksjhasoh1298alshasoidiohaskjasiouashoasasiugoas" * 6
|
|
4
|
+
|
|
5
|
+
require File.join(File.dirname(__FILE__), '_common.rb')
|
|
6
|
+
db = Mongo.new(DEFAULT_HOST, DEFAULT_PORT).db(DEFAULT_DB)
|
|
7
|
+
c = db.collection('stress1')
|
|
8
|
+
|
|
9
|
+
n1 = 50_000
|
|
10
|
+
n2 = 10_000
|
|
11
|
+
|
|
12
|
+
if $DEBUG
|
|
13
|
+
n1 = 5
|
|
14
|
+
n2 = 1
|
|
15
|
+
c.drop
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
n1.times { |i|
|
|
19
|
+
c.insert(:name => "asdf#{i}", :date => Time.now, :id => i,
|
|
20
|
+
:blah => LONG_STRING, :subarray => [])
|
|
21
|
+
}
|
|
22
|
+
puts
|
|
23
|
+
|
|
24
|
+
n2.times { |i|
|
|
25
|
+
x = c.find_first({:id => i})
|
|
26
|
+
x['subarray'] = "foo#{i}"
|
|
27
|
+
p x
|
|
28
|
+
c.modify({:id => i}, x)
|
|
29
|
+
}
|
|
30
|
+
puts
|
|
31
|
+
|
|
32
|
+
if $DEBUG
|
|
33
|
+
puts "stress1 has #{c.count} records"
|
|
34
|
+
c.find.each { |row| puts "#{row['id']}: #{row['subarray'].inspect}" }
|
|
35
|
+
end
|
data/tests/mongo-qa/test1
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require File.join(File.dirname(__FILE__), '_common.rb')
|
|
4
|
+
db = Mongo.new(DEFAULT_HOST, DEFAULT_PORT).db(DEFAULT_DB)
|
|
5
|
+
foo = db.collection('foo')
|
|
6
|
+
|
|
7
|
+
if $DEBUG
|
|
8
|
+
foo.drop
|
|
9
|
+
foo.insert(:x => 1)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
foo.modify({:x => 1}, {:x => 1, :y => 2})
|
|
13
|
+
foo.modify({:x => 2}, {:x => 1, :y => 7})
|
|
14
|
+
foo.repsert({:x => 3}, {:x => 4, :y => 1})
|
|
15
|
+
|
|
16
|
+
if $DEBUG
|
|
17
|
+
foo.find.each { |row| puts row.inspect }
|
|
18
|
+
end
|
data/tests/test_db.rb
CHANGED
|
@@ -67,14 +67,14 @@ class DBTest < Test::Unit::TestCase
|
|
|
67
67
|
|
|
68
68
|
# new id gets added to returned object
|
|
69
69
|
obj = coll.insert('name' => 'Fred', 'age' => 42)
|
|
70
|
-
row = coll.
|
|
70
|
+
row = coll.find_first({'name' => 'Fred'}, :limit => 1)
|
|
71
71
|
oid = row['_id']
|
|
72
72
|
assert_not_nil oid
|
|
73
73
|
assert_equal obj, row
|
|
74
74
|
|
|
75
75
|
oid = XGen::Mongo::Driver::ObjectID.new
|
|
76
76
|
obj = coll.insert('_id' => oid, 'name' => 'Barney', 'age' => 41)
|
|
77
|
-
row = coll.
|
|
77
|
+
row = coll.find_first({'name' => 'Barney'}, :limit => 1)
|
|
78
78
|
db_oid = row['_id']
|
|
79
79
|
assert_equal oid, db_oid
|
|
80
80
|
assert_equal obj, row
|
data/tests/test_db_api.rb
CHANGED
|
@@ -216,6 +216,18 @@ class DBAPITest < Test::Unit::TestCase
|
|
|
216
216
|
assert_equal 4, docs.size
|
|
217
217
|
end
|
|
218
218
|
|
|
219
|
+
def test_find_first
|
|
220
|
+
x = @@coll.find_first('a' => 1)
|
|
221
|
+
assert_not_nil x
|
|
222
|
+
assert_equal 1, x['a']
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
def test_find_first_no_records
|
|
226
|
+
@@coll.clear
|
|
227
|
+
x = @@coll.find_first('a' => 1)
|
|
228
|
+
assert_nil x
|
|
229
|
+
end
|
|
230
|
+
|
|
219
231
|
def test_drop_collection
|
|
220
232
|
assert @@db.drop_collection(@@coll.name), "drop of collection #{@@coll.name} failed"
|
|
221
233
|
assert !@@db.collection_names.include?(@@coll_full_name)
|
data/tests/test_objectid.rb
CHANGED
|
@@ -73,14 +73,14 @@ class ObjectIDTest < Test::Unit::TestCase
|
|
|
73
73
|
assert_equal @o.to_s, o2.to_s
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
def
|
|
77
|
-
assert !ObjectID.
|
|
78
|
-
assert !ObjectID.
|
|
79
|
-
assert !ObjectID.
|
|
80
|
-
assert !ObjectID.
|
|
81
|
-
assert ObjectID.
|
|
82
|
-
assert ObjectID.
|
|
83
|
-
assert !ObjectID.
|
|
76
|
+
def test_legal
|
|
77
|
+
assert !ObjectID.legal?(nil)
|
|
78
|
+
assert !ObjectID.legal?("fred")
|
|
79
|
+
assert !ObjectID.legal?("0000")
|
|
80
|
+
assert !ObjectID.legal?('000102030405060708090A0')
|
|
81
|
+
assert ObjectID.legal?('000102030405060708090A0B')
|
|
82
|
+
assert ObjectID.legal?('abcdefABCDEF123456789012')
|
|
83
|
+
assert !ObjectID.legal?('abcdefABCDEF12345678901x')
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
def test_from_string_leading_zeroes
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mongodb-mongo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jim Menard
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2009-02-
|
|
12
|
+
date: 2009-02-05 00:00:00 -08:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies: []
|
|
15
15
|
|
|
@@ -22,13 +22,24 @@ extensions: []
|
|
|
22
22
|
extra_rdoc_files:
|
|
23
23
|
- README.rdoc
|
|
24
24
|
files:
|
|
25
|
+
- README.rdoc
|
|
26
|
+
- Rakefile
|
|
27
|
+
- mongo-ruby-driver.gemspec
|
|
25
28
|
- bin/mongo_console
|
|
26
29
|
- bin/run_test_script
|
|
30
|
+
- bin/standard_benchmark
|
|
31
|
+
- examples/admin.rb
|
|
27
32
|
- examples/benchmarks.rb
|
|
28
33
|
- examples/blog.rb
|
|
34
|
+
- examples/capped.rb
|
|
35
|
+
- examples/cursor.rb
|
|
36
|
+
- examples/gridfs.rb
|
|
29
37
|
- examples/index_test.rb
|
|
38
|
+
- examples/info.rb
|
|
39
|
+
- examples/queries.rb
|
|
30
40
|
- examples/simple.rb
|
|
31
|
-
-
|
|
41
|
+
- examples/strict.rb
|
|
42
|
+
- examples/types.rb
|
|
32
43
|
- lib/mongo/admin.rb
|
|
33
44
|
- lib/mongo/collection.rb
|
|
34
45
|
- lib/mongo/cursor.rb
|
|
@@ -58,9 +69,7 @@ files:
|
|
|
58
69
|
- lib/mongo/util/byte_buffer.rb
|
|
59
70
|
- lib/mongo/util/ordered_hash.rb
|
|
60
71
|
- lib/mongo/util/xml_to_ruby.rb
|
|
61
|
-
-
|
|
62
|
-
- Rakefile
|
|
63
|
-
- mongo-ruby-driver.gemspec
|
|
72
|
+
- lib/mongo.rb
|
|
64
73
|
has_rdoc: true
|
|
65
74
|
homepage: http://www.mongodb.org
|
|
66
75
|
post_install_message:
|
|
@@ -91,12 +100,17 @@ specification_version: 2
|
|
|
91
100
|
summary: Simple pure-Ruby driver for the 10gen Mongo DB
|
|
92
101
|
test_files:
|
|
93
102
|
- tests/mongo-qa/_common.rb
|
|
103
|
+
- tests/mongo-qa/admin
|
|
94
104
|
- tests/mongo-qa/capped
|
|
95
|
-
- tests/mongo-qa/circular
|
|
96
105
|
- tests/mongo-qa/count1
|
|
106
|
+
- tests/mongo-qa/dbs
|
|
97
107
|
- tests/mongo-qa/find
|
|
108
|
+
- tests/mongo-qa/find1
|
|
109
|
+
- tests/mongo-qa/indices
|
|
98
110
|
- tests/mongo-qa/remove
|
|
111
|
+
- tests/mongo-qa/stress1
|
|
99
112
|
- tests/mongo-qa/test1
|
|
113
|
+
- tests/mongo-qa/update
|
|
100
114
|
- tests/test_admin.rb
|
|
101
115
|
- tests/test_bson.rb
|
|
102
116
|
- tests/test_byte_buffer.rb
|
data/tests/mongo-qa/circular
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
require File.join(File.dirname(__FILE__), '_common.rb')
|
|
4
|
-
db = Mongo.new(DEFAULT_HOST, DEFAULT_PORT).db(DEFAULT_DB)
|
|
5
|
-
|
|
6
|
-
colla = db.collection('a')
|
|
7
|
-
collb = db.collection('b')
|
|
8
|
-
collc = db.collection('c')
|
|
9
|
-
|
|
10
|
-
colla.insert('c' => 'b')
|
|
11
|
-
collb.insert('c' => 1)
|
|
12
|
-
|
|
13
|
-
x_id = ObjectID.new
|
|
14
|
-
x_dbref = DBRef.new(nil, 'thiz', db, 'c', x_id)
|
|
15
|
-
x = {'_id' => x_id, 'that' => 2, 'thiz' => x_dbref}
|
|
16
|
-
collc.insert(x)
|