mongo 2.0.0.beta → 2.0.0.rc
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Rakefile +14 -1
- data/lib/mongo.rb +2 -1
- data/lib/mongo/auth.rb +2 -2
- data/lib/mongo/bulk_write.rb +52 -0
- data/lib/mongo/bulk_write/bulk_writable.rb +191 -0
- data/lib/mongo/bulk_write/deletable.rb +60 -0
- data/lib/mongo/bulk_write/insertable.rb +52 -0
- data/lib/mongo/bulk_write/ordered_bulk_write.rb +48 -0
- data/lib/mongo/bulk_write/replacable.rb +57 -0
- data/lib/mongo/bulk_write/unordered_bulk_write.rb +46 -0
- data/lib/mongo/bulk_write/updatable.rb +68 -0
- data/lib/mongo/client.rb +15 -2
- data/lib/mongo/cluster/topology/replica_set.rb +1 -1
- data/lib/mongo/cluster/topology/sharded.rb +1 -1
- data/lib/mongo/cluster/topology/standalone.rb +1 -1
- data/lib/mongo/cluster/topology/unknown.rb +1 -1
- data/lib/mongo/collection.rb +1 -1
- data/lib/mongo/collection/view/aggregation.rb +1 -1
- data/lib/mongo/collection/view/readable.rb +1 -1
- data/lib/mongo/collection/view/writable.rb +5 -5
- data/lib/mongo/cursor.rb +0 -2
- data/lib/mongo/error.rb +4 -3
- data/lib/mongo/error/{bulk_write_failure.rb → bulk_write_error.rb} +2 -2
- data/lib/mongo/error/invalid_bulk_operation.rb +2 -2
- data/lib/mongo/error/invalid_bulk_operation_type.rb +36 -0
- data/lib/mongo/error/{empty_batch.rb → multi_index_drop.rb} +5 -10
- data/lib/mongo/grid/file/metadata.rb +1 -8
- data/lib/mongo/grid/fs.rb +5 -5
- data/lib/mongo/index/view.rb +90 -34
- data/lib/mongo/operation.rb +0 -1
- data/lib/mongo/operation/aggregate.rb +2 -2
- data/lib/mongo/operation/aggregate/result.rb +4 -0
- data/lib/mongo/operation/bulk_delete/result.rb +2 -127
- data/lib/mongo/operation/bulk_insert/result.rb +2 -132
- data/lib/mongo/operation/bulk_update/result.rb +2 -142
- data/lib/mongo/operation/command.rb +1 -1
- data/lib/mongo/operation/executable.rb +3 -3
- data/lib/mongo/operation/list_collections/result.rb +0 -2
- data/lib/mongo/operation/map_reduce.rb +1 -1
- data/lib/mongo/operation/read/collections_info.rb +1 -1
- data/lib/mongo/operation/read/get_more.rb +1 -1
- data/lib/mongo/operation/read/indexes.rb +1 -1
- data/lib/mongo/operation/read/list_collections.rb +1 -1
- data/lib/mongo/operation/read/list_indexes.rb +1 -1
- data/lib/mongo/operation/read/query.rb +1 -1
- data/lib/mongo/operation/specifiable.rb +18 -1
- data/lib/mongo/operation/write.rb +2 -0
- data/lib/mongo/operation/write/bulk_delete.rb +5 -19
- data/lib/mongo/operation/write/bulk_insert.rb +9 -40
- data/lib/mongo/operation/write/bulk_mergable.rb +67 -0
- data/lib/mongo/operation/write/bulk_update.rb +5 -19
- data/lib/mongo/operation/write/command.rb +1 -1
- data/lib/mongo/operation/write/command/{ensure_index.rb → create_index.rb} +4 -9
- data/lib/mongo/operation/write/command/delete.rb +4 -4
- data/lib/mongo/operation/write/command/drop_index.rb +1 -1
- data/lib/mongo/operation/write/command/insert.rb +4 -4
- data/lib/mongo/operation/write/command/update.rb +4 -4
- data/lib/mongo/operation/write/create_index.rb +12 -7
- data/lib/mongo/operation/write/create_user.rb +1 -1
- data/lib/mongo/operation/write/delete.rb +1 -1
- data/lib/mongo/operation/write/drop_index.rb +1 -1
- data/lib/mongo/operation/write/insert.rb +1 -1
- data/lib/mongo/operation/write/legacy_bulk_mergable.rb +83 -0
- data/lib/mongo/operation/write/remove_user.rb +1 -1
- data/lib/mongo/operation/write/update.rb +1 -1
- data/lib/mongo/{bulk.rb → options.rb} +2 -2
- data/lib/mongo/options/mapper.rb +78 -0
- data/lib/mongo/server.rb +2 -2
- data/lib/mongo/server/connection_pool/queue.rb +1 -1
- data/lib/mongo/server/description.rb +1 -1
- data/lib/mongo/server/description/inspector.rb +1 -1
- data/lib/mongo/server_selector.rb +1 -1
- data/lib/mongo/socket/unix.rb +2 -4
- data/lib/mongo/version.rb +1 -1
- data/lib/mongo/write_concern/acknowledged.rb +15 -1
- data/lib/mongo/write_concern/normalizable.rb +0 -22
- data/lib/mongo/write_concern/unacknowledged.rb +12 -0
- data/spec/mongo/bulk/bulk_write_spec.rb +178 -91
- data/spec/mongo/collection/view/aggregation_spec.rb +14 -1
- data/spec/mongo/collection/view/explainable_spec.rb +1 -1
- data/spec/mongo/collection/view/map_reduce_spec.rb +2 -2
- data/spec/mongo/collection/view/readable_spec.rb +2 -2
- data/spec/mongo/collection/view/writable_spec.rb +7 -7
- data/spec/mongo/collection/view_spec.rb +14 -5
- data/spec/mongo/collection_spec.rb +5 -5
- data/spec/mongo/cursor_spec.rb +3 -3
- data/spec/mongo/database_spec.rb +4 -8
- data/spec/mongo/grid/fs_spec.rb +8 -8
- data/spec/mongo/index/view_spec.rb +139 -35
- data/spec/mongo/operation/aggregate_spec.rb +14 -22
- data/spec/mongo/operation/command_spec.rb +8 -16
- data/spec/mongo/operation/map_reduce_spec.rb +1 -1
- data/spec/mongo/operation/read/indexes_spec.rb +2 -2
- data/spec/mongo/operation/write/bulk_delete_spec.rb +1 -239
- data/spec/mongo/operation/write/bulk_insert_spec.rb +3 -234
- data/spec/mongo/operation/write/bulk_update_spec.rb +1 -289
- data/spec/mongo/operation/write/command/delete_spec.rb +0 -13
- data/spec/mongo/operation/write/command/insert_spec.rb +0 -14
- data/spec/mongo/operation/write/command/update_spec.rb +0 -14
- data/spec/mongo/operation/write/{ensure_index_spec.rb → create_index_spec.rb} +8 -26
- data/spec/mongo/operation/write/delete_spec.rb +1 -1
- data/spec/mongo/operation/write/drop_index_spec.rb +1 -1
- data/spec/mongo/operation/write/insert_spec.rb +3 -3
- data/spec/mongo/operation/write/update_spec.rb +1 -1
- data/spec/mongo/server_selection_spec.rb +2 -2
- data/spec/support/authorization.rb +4 -2
- data/spec/support/server_selection.rb +25 -8
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest.yml +4 -10
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest_non_matching.yml +6 -12
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Primary.yml +4 -6
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred.yml +4 -10
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred_non_matching.yml +6 -12
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary.yml +4 -10
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred.yml +4 -10
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred_non_matching.yml +6 -12
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary_non_matching.yml +6 -12
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest.yml +9 -17
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest_non_matching.yml +9 -17
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Primary.yml +6 -10
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred.yml +11 -21
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred_non_matching.yml +11 -18
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary.yml +31 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred.yml +31 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred_non_matching.yml +29 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary_non_matching.yml +26 -0
- data/spec/support/server_selection/selection/Sharded/read/SecondaryPreferred.yml +4 -10
- data/spec/support/server_selection/selection/Single/read/SecondaryPreferred.yml +2 -6
- data/spec/support/server_selection/selection/Unknown/read/SecondaryPreferred.yml +0 -2
- data/spec/support/shared/bulk_write.rb +109 -72
- metadata +29 -10
- metadata.gz.sig +0 -0
- data/lib/mongo/bulk/bulk_write.rb +0 -307
- data/lib/mongo/operation/batchable.rb +0 -103
@@ -0,0 +1,57 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
module BulkWrite
|
17
|
+
|
18
|
+
# Defines behavior for validating and combining replace bulk write operations.
|
19
|
+
#
|
20
|
+
# @since 2.0.0.
|
21
|
+
module Replacable
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def replacement_doc?(doc)
|
26
|
+
doc.respond_to?(:keys) && doc.keys.all?{|key| key !~ /^\$/}
|
27
|
+
end
|
28
|
+
|
29
|
+
def validate_replace_op!(r, type)
|
30
|
+
unless r[:find] && r[:replacement] && replacement_doc?(r[:replacement])
|
31
|
+
raise Error::InvalidBulkOperation.new(type, r)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def replace_ops(ops, type)
|
36
|
+
ops.collect do |r|
|
37
|
+
validate_replace_op!(r, type)
|
38
|
+
{ q: r[:find],
|
39
|
+
u: r[:replacement],
|
40
|
+
multi: false,
|
41
|
+
upsert: r.fetch(:upsert, false)
|
42
|
+
}
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def replace_one(op, server)
|
47
|
+
Operation::Write::BulkUpdate.new(
|
48
|
+
:updates => replace_ops(op[:replace_one], __method__),
|
49
|
+
:db_name => database.name,
|
50
|
+
:coll_name => @collection.name,
|
51
|
+
:write_concern => write_concern,
|
52
|
+
:ordered => ordered?
|
53
|
+
).execute(server.context)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
|
17
|
+
module BulkWrite
|
18
|
+
|
19
|
+
class UnorderedBulkWrite
|
20
|
+
|
21
|
+
include BulkWritable
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def ordered?
|
26
|
+
false
|
27
|
+
end
|
28
|
+
|
29
|
+
def merged_ops
|
30
|
+
merge_consecutive_ops(merge_ops_by_type)
|
31
|
+
end
|
32
|
+
|
33
|
+
def process(result, indexes)
|
34
|
+
combine_results(result, indexes)
|
35
|
+
end
|
36
|
+
|
37
|
+
def finalize
|
38
|
+
@results.tap do |results|
|
39
|
+
if results[:write_errors] || results[:write_concern_errors]
|
40
|
+
raise Error::BulkWriteError.new(results)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
module BulkWrite
|
17
|
+
|
18
|
+
# Defines behavior for validating and combining update bulk write operations.
|
19
|
+
#
|
20
|
+
# @since 2.0.0.
|
21
|
+
module Updatable
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def update_doc?(doc)
|
26
|
+
!doc.empty? &&
|
27
|
+
doc.respond_to?(:keys) &&
|
28
|
+
doc.keys.first.to_s =~ /^\$/
|
29
|
+
end
|
30
|
+
|
31
|
+
def validate_update_op!(type, u)
|
32
|
+
unless u[:find] && u[:update] && update_doc?(u[:update])
|
33
|
+
raise Error::InvalidBulkOperation.new(type, u)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def updates(ops, type)
|
38
|
+
multi = type == :update_many
|
39
|
+
ops.collect do |u|
|
40
|
+
validate_update_op!(type, u)
|
41
|
+
{ q: u[:find],
|
42
|
+
u: u[:update],
|
43
|
+
multi: multi,
|
44
|
+
upsert: u.fetch(:upsert, false)
|
45
|
+
}
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def update(ops, type, server)
|
50
|
+
Operation::Write::BulkUpdate.new(
|
51
|
+
:updates => updates(ops, type),
|
52
|
+
:db_name => database.name,
|
53
|
+
:coll_name => @collection.name,
|
54
|
+
:write_concern => write_concern,
|
55
|
+
:ordered => ordered?
|
56
|
+
).execute(server.context)
|
57
|
+
end
|
58
|
+
|
59
|
+
def update_one(op, server)
|
60
|
+
update(op[:update_one], __method__, server)
|
61
|
+
end
|
62
|
+
|
63
|
+
def update_many(op, server)
|
64
|
+
update(op[:update_many], __method__, server)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
data/lib/mongo/client.rb
CHANGED
@@ -98,8 +98,10 @@ module Mongo
|
|
98
98
|
# @option options [ Hash ] :auth_mech_properties
|
99
99
|
# @option options [ Float ] :heartbeat_frequency The number of seconds for
|
100
100
|
# the server monitor to refresh it's description via ismaster.
|
101
|
-
# @option options [ Integer ] :local_threshold
|
102
|
-
#
|
101
|
+
# @option options [ Integer ] :local_threshold The local threshold boundary
|
102
|
+
# in seconds for selecting a near server for an operation.
|
103
|
+
# @option options [ Integer ] :server_selection_timeout The timeout in seconds
|
104
|
+
# for selecting a server for an operation.
|
103
105
|
# @option options [ String ] :password The user's password.
|
104
106
|
# @option options [ Integer ] :max_pool_size The maximum size of the
|
105
107
|
# connection pool.
|
@@ -117,6 +119,17 @@ module Mongo
|
|
117
119
|
# @option options [ Symbol ] :replica_set The name of the replica set to
|
118
120
|
# connect to. Servers not in this replica set will be ignored.
|
119
121
|
# @option options [ true, false ] :ssl Whether to use SSL.
|
122
|
+
# @option options [ String ] :ssl_cert The certificate file used to identify
|
123
|
+
# the connection against MongoDB.
|
124
|
+
# @option options [ String ] :ssl_key The private keyfile used to identify the
|
125
|
+
# connection against MongoDB. Note that even if the key is stored in the same
|
126
|
+
# file as the certificate, both need to be explicitly specified.
|
127
|
+
# @option options [ String ] :ssl_key_pass_phrase A passphrase for the private key.
|
128
|
+
# @option options [ true, false ] :ssl_verify Whether or not to do peer certification
|
129
|
+
# validation.
|
130
|
+
# @option options [ String ] :ssl_ca_cert The file containing a set of concatenated
|
131
|
+
# certification authority certifications used to validate certs passed from the
|
132
|
+
# other end of the connection. Required for :ssl_verify.
|
120
133
|
# @option options [ Float ] :socket_timeout The timeout, in seconds, to
|
121
134
|
# execute operations on a socket.
|
122
135
|
# @option options [ String ] :user The user name.
|
@@ -54,7 +54,7 @@ module Mongo
|
|
54
54
|
#
|
55
55
|
# @param [ Server::Description ] description The description of the
|
56
56
|
# elected primary.
|
57
|
-
# @param [ Array<Server> ]
|
57
|
+
# @param [ Array<Server> ] servers The list of known servers to the
|
58
58
|
# cluster.
|
59
59
|
#
|
60
60
|
# @return [ ReplicaSet ] The topology.
|
@@ -45,7 +45,7 @@ module Mongo
|
|
45
45
|
#
|
46
46
|
# @param [ Server::Description ] description The description of the
|
47
47
|
# elected primary.
|
48
|
-
# @param [ Array<Server> ]
|
48
|
+
# @param [ Array<Server> ] servers The list of known servers to the
|
49
49
|
# cluster.
|
50
50
|
#
|
51
51
|
# @return [ Sharded ] The topology.
|
@@ -45,7 +45,7 @@ module Mongo
|
|
45
45
|
#
|
46
46
|
# @param [ Server::Description ] description The description of the
|
47
47
|
# elected primary.
|
48
|
-
# @param [ Array<Server> ]
|
48
|
+
# @param [ Array<Server> ] servers The list of known servers to the
|
49
49
|
# cluster.
|
50
50
|
#
|
51
51
|
# @return [ Standalone ] The topology.
|
@@ -49,7 +49,7 @@ module Mongo
|
|
49
49
|
#
|
50
50
|
# @param [ Server::Description ] description The description of the
|
51
51
|
# elected primary.
|
52
|
-
# @param [ Array<Server> ]
|
52
|
+
# @param [ Array<Server> ] servers The list of known servers to the
|
53
53
|
# cluster.
|
54
54
|
#
|
55
55
|
# @return [ Sharded, ReplicaSet ] The new topology.
|
data/lib/mongo/collection.rb
CHANGED
@@ -203,7 +203,7 @@ module Mongo
|
|
203
203
|
#
|
204
204
|
# @since 2.0.0
|
205
205
|
def bulk_write(operations, options)
|
206
|
-
BulkWrite.
|
206
|
+
BulkWrite.get(self, operations, options).execute
|
207
207
|
end
|
208
208
|
|
209
209
|
# Get the fully qualified namespace of the collection.
|
@@ -96,7 +96,7 @@ module Mongo
|
|
96
96
|
def send_initial_query(server)
|
97
97
|
begin
|
98
98
|
initial_query_op.execute(server.context)
|
99
|
-
rescue Mongo::
|
99
|
+
rescue Mongo::Error::NeedPrimaryServer
|
100
100
|
warn 'Rerouting the Aggregation operation to the primary server.'
|
101
101
|
server = ServerSelector.get(mode: :primary).select_server(cluster)
|
102
102
|
initial_query_op.execute(server.context)
|
@@ -271,7 +271,7 @@ module Mongo
|
|
271
271
|
# @example Set the number to skip.
|
272
272
|
# view.skip(10)
|
273
273
|
#
|
274
|
-
# @param [ Integer ]
|
274
|
+
# @param [ Integer ] number Number of docs to skip.
|
275
275
|
#
|
276
276
|
# @return [ Integer, View ] Either the skip value or a
|
277
277
|
# new +View+.
|
@@ -45,7 +45,7 @@ module Mongo
|
|
45
45
|
# @example Find a document and replace it, returning the new document.
|
46
46
|
# view.find_one_and_replace({ name: 'test' }, :return_document => :after)
|
47
47
|
#
|
48
|
-
# @param [ BSON::Document ]
|
48
|
+
# @param [ BSON::Document ] replacement The updates.
|
49
49
|
# @param [ Hash ] opts The options.
|
50
50
|
#
|
51
51
|
# @option opts [ Symbol ] :return_document Either :before or :after.
|
@@ -85,24 +85,24 @@ module Mongo
|
|
85
85
|
# Remove documents from the collection.
|
86
86
|
#
|
87
87
|
# @example Remove multiple documents from the collection.
|
88
|
-
# collection_view.
|
88
|
+
# collection_view.delete_many
|
89
89
|
#
|
90
90
|
# @return [ Result ] The response from the database.
|
91
91
|
#
|
92
92
|
# @since 2.0.0
|
93
|
-
def
|
93
|
+
def delete_many
|
94
94
|
remove(0)
|
95
95
|
end
|
96
96
|
|
97
97
|
# Remove a document from the collection.
|
98
98
|
#
|
99
99
|
# @example Remove a single document from the collection.
|
100
|
-
# collection_view.
|
100
|
+
# collection_view.delete_one
|
101
101
|
#
|
102
102
|
# @return [ Result ] The response from the database.
|
103
103
|
#
|
104
104
|
# @since 2.0.0
|
105
|
-
def
|
105
|
+
def delete_one
|
106
106
|
remove(1)
|
107
107
|
end
|
108
108
|
|
data/lib/mongo/cursor.rb
CHANGED
data/lib/mongo/error.rb
CHANGED
@@ -40,7 +40,7 @@ module Mongo
|
|
40
40
|
|
41
41
|
# The constant for the writeErrors array.
|
42
42
|
#
|
43
|
-
# @
|
43
|
+
# @since 2.0.0
|
44
44
|
WRITE_ERRORS = 'writeErrors'.freeze
|
45
45
|
|
46
46
|
# The constant for write concern errors.
|
@@ -61,10 +61,10 @@ module Mongo
|
|
61
61
|
end
|
62
62
|
|
63
63
|
require 'mongo/error/parser'
|
64
|
-
require 'mongo/error/
|
64
|
+
require 'mongo/error/bulk_write_error'
|
65
65
|
require 'mongo/error/operation_failure'
|
66
|
-
require 'mongo/error/empty_batch'
|
67
66
|
require 'mongo/error/invalid_bulk_operation'
|
67
|
+
require 'mongo/error/invalid_bulk_operation_type'
|
68
68
|
require 'mongo/error/invalid_collection_name'
|
69
69
|
require 'mongo/error/invalid_database_name'
|
70
70
|
require 'mongo/error/invalid_document'
|
@@ -75,6 +75,7 @@ require 'mongo/error/invalid_signature'
|
|
75
75
|
require 'mongo/error/invalid_update_document'
|
76
76
|
require 'mongo/error/max_bson_size'
|
77
77
|
require 'mongo/error/max_message_size'
|
78
|
+
require 'mongo/error/multi_index_drop'
|
78
79
|
require 'mongo/error/need_primary_server'
|
79
80
|
require 'mongo/error/socket_error'
|
80
81
|
require 'mongo/error/socket_timeout_error'
|
@@ -19,7 +19,7 @@ module Mongo
|
|
19
19
|
# operation.
|
20
20
|
#
|
21
21
|
# @since 2.0.0
|
22
|
-
class
|
22
|
+
class BulkWriteError < Error
|
23
23
|
|
24
24
|
# @return [ BSON::Document ] result The error result.
|
25
25
|
attr_reader :result
|
@@ -29,7 +29,7 @@ module Mongo
|
|
29
29
|
# @example Instantiate the exception.
|
30
30
|
# Mongo::Error::BulkWriteFailure.new(response)
|
31
31
|
#
|
32
|
-
# @
|
32
|
+
# @param [ Hash ] result A processed response from the server
|
33
33
|
# reporting results of the operation.
|
34
34
|
#
|
35
35
|
# @since 2.0.0
|
@@ -28,8 +28,8 @@ module Mongo
|
|
28
28
|
# @param [ String ] name The attempted operation name.
|
29
29
|
#
|
30
30
|
# @since 2.0.0
|
31
|
-
def initialize(
|
32
|
-
super("Invalid
|
31
|
+
def initialize(type, operation)
|
32
|
+
super("Invalid document format for bulk #{type} operation: #{operation}.")
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Exception raised if an non-existent operation type is used.
|
19
|
+
#
|
20
|
+
# @since 2.0.0
|
21
|
+
class InvalidBulkOperationType < Error
|
22
|
+
|
23
|
+
# Instantiate the new exception.
|
24
|
+
#
|
25
|
+
# @example Instantiate the exception.
|
26
|
+
# Mongo::Error::InvalidBulkOperationType.new(type)
|
27
|
+
#
|
28
|
+
# @param [ String ] type The attempted operation type.
|
29
|
+
#
|
30
|
+
# @since 2.0.0
|
31
|
+
def initialize(type)
|
32
|
+
super("Invalid bulk operation type: #{type}.")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C)
|
1
|
+
# Copyright (C) 2015 MongoDB, Inc.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -15,24 +15,19 @@
|
|
15
15
|
module Mongo
|
16
16
|
class Error
|
17
17
|
|
18
|
-
# Exception raised
|
18
|
+
# Exception raised if '*' is passed to drop_one on indexes.
|
19
19
|
#
|
20
20
|
# @since 2.0.0
|
21
|
-
class
|
22
|
-
|
23
|
-
# The error message.
|
24
|
-
#
|
25
|
-
# @since 2.0.0
|
26
|
-
MESSAGE = 'No operations to execute'.freeze
|
21
|
+
class MultiIndexDrop < Error
|
27
22
|
|
28
23
|
# Instantiate the new exception.
|
29
24
|
#
|
30
25
|
# @example Instantiate the exception.
|
31
|
-
# Mongo::Error::
|
26
|
+
# Mongo::Error::MultiIndexDrop.new
|
32
27
|
#
|
33
28
|
# @since 2.0.0
|
34
29
|
def initialize
|
35
|
-
super(
|
30
|
+
super("Passing '*' to #drop_one would cause all indexes to be dropped. Please use #drop_all")
|
36
31
|
end
|
37
32
|
end
|
38
33
|
end
|