mongo 2.5.1 → 2.5.2
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 +3 -2
- data.tar.gz.sig +0 -0
- data/Rakefile +1 -1
- data/lib/mongo/auth/user/view.rb +4 -4
- data/lib/mongo/bulk_write.rb +14 -19
- data/lib/mongo/cluster.rb +4 -2
- data/lib/mongo/cluster/app_metadata.rb +1 -1
- data/lib/mongo/cluster/reapers/cursor_reaper.rb +1 -1
- data/lib/mongo/collection.rb +13 -13
- data/lib/mongo/collection/view.rb +2 -1
- data/lib/mongo/collection/view/aggregation.rb +1 -1
- data/lib/mongo/collection/view/change_stream.rb +1 -1
- data/lib/mongo/collection/view/iterable.rb +4 -4
- data/lib/mongo/collection/view/map_reduce.rb +3 -3
- data/lib/mongo/collection/view/readable.rb +26 -20
- data/lib/mongo/collection/view/writable.rb +12 -12
- data/lib/mongo/cursor.rb +4 -7
- data/lib/mongo/database.rb +2 -2
- data/lib/mongo/database/view.rb +1 -1
- data/lib/mongo/grid/stream/write.rb +1 -1
- data/lib/mongo/index/view.rb +3 -3
- data/lib/mongo/operation.rb +38 -24
- data/lib/mongo/operation/aggregate.rb +53 -0
- data/lib/mongo/operation/aggregate/command.rb +59 -0
- data/lib/mongo/operation/aggregate/op_msg.rb +54 -0
- data/lib/mongo/operation/aggregate/result.rb +87 -0
- data/lib/mongo/operation/collections_info.rb +62 -0
- data/lib/mongo/operation/collections_info/result.rb +39 -0
- data/lib/mongo/operation/{executable.rb → command.rb} +16 -13
- data/lib/mongo/operation/command/command.rb +38 -0
- data/lib/mongo/operation/command/op_msg.rb +53 -0
- data/lib/mongo/operation/count.rb +48 -0
- data/lib/mongo/operation/count/command.rb +38 -0
- data/lib/mongo/operation/count/op_msg.rb +38 -0
- data/lib/mongo/operation/create.rb +48 -0
- data/lib/mongo/operation/create/command.rb +38 -0
- data/lib/mongo/operation/create/op_msg.rb +37 -0
- data/lib/mongo/operation/create_index.rb +48 -0
- data/lib/mongo/operation/create_index/command.rb +42 -0
- data/lib/mongo/operation/create_index/op_msg.rb +41 -0
- data/lib/mongo/operation/create_user.rb +48 -0
- data/lib/mongo/operation/{commands → create_user}/command.rb +13 -19
- data/lib/mongo/operation/create_user/op_msg.rb +41 -0
- data/lib/mongo/operation/delete.rb +38 -0
- data/lib/mongo/operation/delete/bulk_result.rb +46 -0
- data/lib/mongo/operation/delete/command.rb +59 -0
- data/lib/mongo/operation/delete/legacy.rb +69 -0
- data/lib/mongo/operation/delete/op_msg.rb +60 -0
- data/lib/mongo/operation/{write/delete → delete}/result.rb +18 -16
- data/lib/mongo/operation/distinct.rb +48 -0
- data/lib/mongo/operation/distinct/command.rb +38 -0
- data/lib/mongo/operation/distinct/op_msg.rb +38 -0
- data/lib/mongo/operation/drop.rb +48 -0
- data/lib/mongo/operation/drop/command.rb +38 -0
- data/lib/mongo/operation/{commands/count.rb → drop/op_msg.rb} +16 -6
- data/lib/mongo/operation/drop_database.rb +48 -0
- data/lib/mongo/operation/drop_database/command.rb +38 -0
- data/lib/mongo/operation/drop_database/op_msg.rb +37 -0
- data/lib/mongo/operation/drop_index.rb +48 -0
- data/lib/mongo/operation/drop_index/command.rb +42 -0
- data/lib/mongo/operation/{limited.rb → drop_index/op_msg.rb} +19 -15
- data/lib/mongo/operation/explain.rb +52 -0
- data/lib/mongo/operation/explain/command.rb +54 -0
- data/lib/mongo/operation/explain/legacy.rb +53 -0
- data/lib/mongo/operation/explain/op_msg.rb +54 -0
- data/lib/mongo/operation/explain/result.rb +50 -0
- data/lib/mongo/operation/find.rb +52 -0
- data/lib/mongo/operation/find/command.rb +54 -0
- data/lib/mongo/operation/find/legacy.rb +55 -0
- data/lib/mongo/operation/{read/query → find/legacy}/result.rb +3 -3
- data/lib/mongo/operation/find/op_msg.rb +59 -0
- data/lib/mongo/operation/find/result.rb +60 -0
- data/lib/mongo/operation/{commands/users_info/result.rb → get_more.rb} +20 -22
- data/lib/mongo/operation/get_more/command.rb +54 -0
- data/lib/mongo/operation/{commands/find.rb → get_more/legacy.rb} +15 -8
- data/lib/mongo/operation/get_more/op_msg.rb +58 -0
- data/lib/mongo/operation/get_more/result.rb +60 -0
- data/lib/mongo/operation/indexes.rb +52 -0
- data/lib/mongo/operation/indexes/command.rb +54 -0
- data/lib/mongo/operation/indexes/legacy.rb +57 -0
- data/lib/mongo/operation/indexes/op_msg.rb +54 -0
- data/lib/mongo/operation/indexes/result.rb +97 -0
- data/lib/mongo/operation/insert.rb +40 -0
- data/lib/mongo/operation/insert/bulk_result.rb +70 -0
- data/lib/mongo/operation/insert/command.rb +65 -0
- data/lib/mongo/operation/insert/legacy.rb +72 -0
- data/lib/mongo/operation/insert/op_msg.rb +61 -0
- data/lib/mongo/operation/insert/result.rb +64 -0
- data/lib/mongo/operation/kill_cursors.rb +25 -14
- data/lib/mongo/operation/{takes_write_concern.rb → kill_cursors/command.rb} +14 -12
- data/lib/mongo/operation/kill_cursors/legacy.rb +37 -0
- data/lib/mongo/operation/kill_cursors/op_msg.rb +37 -0
- data/lib/mongo/operation/list_collections.rb +49 -0
- data/lib/mongo/operation/list_collections/command.rb +60 -0
- data/lib/mongo/operation/list_collections/op_msg.rb +53 -0
- data/lib/mongo/operation/list_collections/result.rb +92 -0
- data/lib/mongo/operation/map_reduce.rb +49 -0
- data/lib/mongo/operation/map_reduce/command.rb +55 -0
- data/lib/mongo/operation/map_reduce/op_msg.rb +54 -0
- data/lib/mongo/operation/map_reduce/result.rb +129 -0
- data/lib/mongo/operation/parallel_scan.rb +49 -0
- data/lib/mongo/operation/parallel_scan/command.rb +67 -0
- data/lib/mongo/operation/parallel_scan/op_msg.rb +61 -0
- data/lib/mongo/operation/parallel_scan/result.rb +61 -0
- data/lib/mongo/operation/remove_user.rb +48 -0
- data/lib/mongo/operation/remove_user/command.rb +42 -0
- data/lib/mongo/operation/remove_user/op_msg.rb +41 -0
- data/lib/mongo/operation/result.rb +3 -1
- data/lib/mongo/operation/shared/bypass_document_validation.rb +36 -0
- data/lib/mongo/operation/{causally_consistent.rb → shared/causal_consistency_supported.rb} +5 -5
- data/lib/mongo/operation/shared/executable.rb +45 -0
- data/lib/mongo/operation/shared/idable.rb +64 -0
- data/lib/mongo/operation/{commands/distinct.rb → shared/limited.rb} +10 -7
- data/lib/mongo/operation/{object_id_generator.rb → shared/object_id_generator.rb} +2 -2
- data/lib/mongo/operation/{read_preference.rb → shared/read_preference_supported.rb} +14 -24
- data/lib/mongo/operation/shared/result/aggregatable.rb +75 -0
- data/lib/mongo/operation/shared/sessions_supported.rb +79 -0
- data/lib/mongo/operation/{specifiable.rb → shared/specifiable.rb} +40 -4
- data/lib/mongo/operation/shared/write.rb +81 -0
- data/lib/mongo/operation/shared/write_concern_supported.rb +39 -0
- data/lib/mongo/operation/update.rb +38 -0
- data/lib/mongo/operation/update/bulk_result.rb +126 -0
- data/lib/mongo/operation/update/command.rb +60 -0
- data/lib/mongo/operation/update/legacy.rb +80 -0
- data/lib/mongo/operation/{write/update → update/legacy}/result.rb +4 -82
- data/lib/mongo/operation/update/op_msg.rb +60 -0
- data/lib/mongo/operation/update/result.rb +102 -0
- data/lib/mongo/operation/update_user.rb +48 -0
- data/lib/mongo/operation/update_user/command.rb +41 -0
- data/lib/mongo/operation/update_user/op_msg.rb +41 -0
- data/lib/mongo/operation/users_info.rb +49 -0
- data/lib/mongo/operation/users_info/command.rb +58 -0
- data/lib/mongo/operation/users_info/op_msg.rb +57 -0
- data/lib/mongo/operation/{commands/collections_info → users_info}/result.rb +18 -17
- data/lib/mongo/server.rb +3 -5
- data/lib/mongo/server/connectable.rb +3 -3
- data/lib/mongo/server/connection.rb +14 -0
- data/lib/mongo/server_selector.rb +1 -1
- data/lib/mongo/server_selector/selectable.rb +3 -12
- data/lib/mongo/session.rb +13 -1
- data/lib/mongo/session/session_pool.rb +1 -1
- data/lib/mongo/version.rb +1 -1
- data/spec/mongo/client_spec.rb +15 -22
- data/spec/mongo/cluster/app_metadata_spec.rb +19 -3
- data/spec/mongo/cluster/cursor_reaper_spec.rb +37 -0
- data/spec/mongo/cluster_spec.rb +2 -2
- data/spec/mongo/collection/view/change_stream_spec.rb +2 -2
- data/spec/mongo/collection_spec.rb +105 -14
- data/spec/mongo/cursor_spec.rb +11 -11
- data/spec/mongo/grid/fs_bucket_spec.rb +5 -0
- data/spec/mongo/max_staleness_spec.rb +3 -1
- data/spec/mongo/operation/{commands/aggregate → aggregate}/result_spec.rb +1 -1
- data/spec/mongo/operation/{commands/aggregate_spec.rb → aggregate_spec.rb} +1 -1
- data/spec/mongo/operation/{commands/collections_info_spec.rb → collections_info_spec.rb} +4 -2
- data/spec/mongo/operation/{commands/command_spec.rb → command_spec.rb} +1 -1
- data/spec/mongo/operation/{write/command/create_index_spec.rb → create_index_spec.rb} +1 -1
- data/spec/mongo/operation/{write/create_user_spec.rb → create_user_spec.rb} +1 -1
- data/spec/mongo/operation/{write/bulk/delete_spec.rb → delete/bulk_spec.rb} +8 -8
- data/spec/mongo/operation/delete/command_spec.rb +111 -0
- data/spec/mongo/operation/{write/command/delete_spec.rb → delete/op_msg_spec.rb} +40 -34
- data/spec/mongo/operation/{write/delete_spec.rb → delete_spec.rb} +7 -7
- data/spec/mongo/operation/{write/command/drop_index_spec.rb → drop_index_spec.rb} +1 -1
- data/spec/mongo/operation/{read/query_spec.rb → find/legacy_spec.rb} +2 -2
- data/spec/mongo/operation/{read/get_more_spec.rb → get_more_spec.rb} +3 -3
- data/spec/mongo/operation/{commands/indexes_spec.rb → indexes_spec.rb} +6 -4
- data/spec/mongo/operation/{write/bulk/insert_spec.rb → insert/bulk_spec.rb} +9 -9
- data/spec/mongo/operation/insert/command_spec.rb +110 -0
- data/spec/mongo/operation/{write/command/insert_spec.rb → insert/op_msg_spec.rb} +51 -41
- data/spec/mongo/operation/{write/insert_spec.rb → insert_spec.rb} +2 -2
- data/spec/mongo/operation/kill_cursors_spec.rb +2 -2
- data/spec/mongo/operation/limited_spec.rb +3 -3
- data/spec/mongo/operation/{commands/map_reduce_spec.rb → map_reduce_spec.rb} +1 -1
- data/spec/mongo/operation/read_preference_spec.rb +2 -2
- data/spec/mongo/operation/{write/command/remove_user_spec.rb → remove_user_spec.rb} +1 -1
- data/spec/mongo/operation/{write/bulk/update_spec.rb → update/bulk_spec.rb} +8 -8
- data/spec/mongo/operation/update/command_spec.rb +114 -0
- data/spec/mongo/operation/{write/command/update_spec.rb → update/op_msg_spec.rb} +49 -40
- data/spec/mongo/operation/{write/update_spec.rb → update_spec.rb} +6 -6
- data/spec/mongo/operation/{write/command/update_user_spec.rb → update_user_spec.rb} +1 -1
- data/spec/mongo/server/connection_spec.rb +0 -22
- data/spec/mongo/server_selector_spec.rb +55 -0
- data/spec/mongo/server_spec.rb +0 -42
- data/spec/mongo/session/session_pool_spec.rb +1 -1
- data/spec/mongo/uri/srv_protocol_spec.rb +2 -2
- data/spec/mongo/uri_spec.rb +2 -2
- data/spec/support/gridfs_tests/delete.yml +4 -38
- data/spec/support/gridfs_tests/download.yml +12 -30
- data/spec/support/server_selection.rb +1 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest_multiple.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PossiblePrimary.yml +15 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PossiblePrimaryNearest.yml +15 -0
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Primary.yml +0 -3
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest_multiple.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Primary.yml +0 -3
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary_non_matching.yml +0 -1
- data/spec/support/server_selection/selection/Sharded/read/Nearest.yml +21 -0
- data/spec/support/server_selection/selection/Sharded/read/Primary.yml +19 -0
- data/spec/support/server_selection/selection/Sharded/read/PrimaryPreferred.yml +21 -0
- data/spec/support/server_selection/selection/Sharded/read/Secondary.yml +21 -0
- data/spec/support/server_selection/selection/Sharded/read/SecondaryPreferred.yml +0 -5
- data/spec/support/server_selection/selection/Single/read/SecondaryPreferred.yml +0 -1
- data/spec/support/server_selection/selection/Unknown/read/SecondaryPreferred.yml +0 -1
- data/spec/support/shared/session.rb +46 -5
- metadata +174 -116
- metadata.gz.sig +1 -2
- data/lib/mongo/operation/commands.rb +0 -31
- data/lib/mongo/operation/commands/aggregate.rb +0 -63
- data/lib/mongo/operation/commands/aggregate/result.rb +0 -89
- data/lib/mongo/operation/commands/collections_info.rb +0 -71
- data/lib/mongo/operation/commands/create.rb +0 -49
- data/lib/mongo/operation/commands/drop.rb +0 -49
- data/lib/mongo/operation/commands/drop_database.rb +0 -49
- data/lib/mongo/operation/commands/explain.rb +0 -27
- data/lib/mongo/operation/commands/explain/result.rb +0 -52
- data/lib/mongo/operation/commands/find/result.rb +0 -62
- data/lib/mongo/operation/commands/get_more.rb +0 -27
- data/lib/mongo/operation/commands/get_more/result.rb +0 -62
- data/lib/mongo/operation/commands/indexes.rb +0 -73
- data/lib/mongo/operation/commands/list_collections.rb +0 -48
- data/lib/mongo/operation/commands/list_collections/result.rb +0 -94
- data/lib/mongo/operation/commands/list_indexes.rb +0 -48
- data/lib/mongo/operation/commands/list_indexes/result.rb +0 -98
- data/lib/mongo/operation/commands/map_reduce.rb +0 -65
- data/lib/mongo/operation/commands/map_reduce/result.rb +0 -131
- data/lib/mongo/operation/commands/parallel_scan.rb +0 -54
- data/lib/mongo/operation/commands/parallel_scan/result.rb +0 -64
- data/lib/mongo/operation/commands/users_info.rb +0 -52
- data/lib/mongo/operation/read.rb +0 -16
- data/lib/mongo/operation/read/get_more.rb +0 -52
- data/lib/mongo/operation/read/query.rb +0 -55
- data/lib/mongo/operation/uses_command_op_msg.rb +0 -78
- data/lib/mongo/operation/write.rb +0 -22
- data/lib/mongo/operation/write/bulk.rb +0 -20
- data/lib/mongo/operation/write/bulk/bulkable.rb +0 -82
- data/lib/mongo/operation/write/bulk/delete.rb +0 -71
- data/lib/mongo/operation/write/bulk/delete/result.rb +0 -71
- data/lib/mongo/operation/write/bulk/insert.rb +0 -96
- data/lib/mongo/operation/write/bulk/insert/result.rb +0 -129
- data/lib/mongo/operation/write/bulk/legacy_mergable.rb +0 -87
- data/lib/mongo/operation/write/bulk/mergable.rb +0 -73
- data/lib/mongo/operation/write/bulk/update.rb +0 -81
- data/lib/mongo/operation/write/bulk/update/result.rb +0 -196
- data/lib/mongo/operation/write/command.rb +0 -23
- data/lib/mongo/operation/write/command/create_index.rb +0 -79
- data/lib/mongo/operation/write/command/create_user.rb +0 -61
- data/lib/mongo/operation/write/command/delete.rb +0 -79
- data/lib/mongo/operation/write/command/drop_index.rb +0 -80
- data/lib/mongo/operation/write/command/insert.rb +0 -69
- data/lib/mongo/operation/write/command/remove_user.rb +0 -60
- data/lib/mongo/operation/write/command/update.rb +0 -77
- data/lib/mongo/operation/write/command/update_user.rb +0 -61
- data/lib/mongo/operation/write/command/writable.rb +0 -70
- data/lib/mongo/operation/write/delete.rb +0 -75
- data/lib/mongo/operation/write/gle.rb +0 -49
- data/lib/mongo/operation/write/idable.rb +0 -63
- data/lib/mongo/operation/write/insert.rb +0 -74
- data/lib/mongo/operation/write/insert/result.rb +0 -62
- data/lib/mongo/operation/write/update.rb +0 -91
- data/lib/mongo/operation/write/write_command_enabled.rb +0 -77
@@ -1,77 +0,0 @@
|
|
1
|
-
# Copyright (C) 2014-2017 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 Operation
|
17
|
-
module Write
|
18
|
-
module Command
|
19
|
-
|
20
|
-
# A MongoDB update write command operation.
|
21
|
-
#
|
22
|
-
# @example Create an update write command operation.
|
23
|
-
# Write::Command::Update.new({
|
24
|
-
# :updates => [{
|
25
|
-
# :q => { :foo => 1 },
|
26
|
-
# :u => { :$set =>
|
27
|
-
# :bar => 1 }},
|
28
|
-
# :multi => true,
|
29
|
-
# :upsert => false
|
30
|
-
# :array_filters => []
|
31
|
-
# }],
|
32
|
-
# :db_name => 'test',
|
33
|
-
# :coll_name => 'test_coll',
|
34
|
-
# :write_concern => write_concern,
|
35
|
-
# :ordered => true,
|
36
|
-
# :bypass_document_validation => true
|
37
|
-
# })
|
38
|
-
#
|
39
|
-
# @since 2.0.0
|
40
|
-
class Update
|
41
|
-
include Specifiable
|
42
|
-
include Writable
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
IDENTIFIER = 'updates'.freeze
|
47
|
-
|
48
|
-
def selector
|
49
|
-
{ update: coll_name,
|
50
|
-
updates: updates
|
51
|
-
}.merge(command_options)
|
52
|
-
end
|
53
|
-
|
54
|
-
def op_msg(server)
|
55
|
-
global_args = { update: coll_name,
|
56
|
-
Protocol::Msg::DATABASE_IDENTIFIER => db_name
|
57
|
-
}.merge!(command_options)
|
58
|
-
update_selector_for_session!(global_args, server)
|
59
|
-
|
60
|
-
section = { type: 1, payload: { identifier: IDENTIFIER, sequence: updates } }
|
61
|
-
flags = unacknowledged_write? ? [:more_to_come] : [:none]
|
62
|
-
Protocol::Msg.new(flags, {}, global_args, section)
|
63
|
-
end
|
64
|
-
|
65
|
-
def message(server)
|
66
|
-
if server.features.op_msg_enabled?
|
67
|
-
op_msg(server)
|
68
|
-
else
|
69
|
-
Protocol::Query.new(db_name, Database::COMMAND, selector, options)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
@@ -1,61 +0,0 @@
|
|
1
|
-
|
2
|
-
# Copyright (C) 2014-2017 MongoDB, Inc.
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
|
16
|
-
module Mongo
|
17
|
-
module Operation
|
18
|
-
module Write
|
19
|
-
module Command
|
20
|
-
|
21
|
-
# Update user command on non-legacy servers.
|
22
|
-
#
|
23
|
-
# @since 2.0.0
|
24
|
-
class UpdateUser
|
25
|
-
include Specifiable
|
26
|
-
include Writable
|
27
|
-
|
28
|
-
# Execute the operation.
|
29
|
-
#
|
30
|
-
# @example Execute the operation.
|
31
|
-
# operation.execute(server)
|
32
|
-
#
|
33
|
-
# @param [ Mongo::Server ] server The server to send this operation to.
|
34
|
-
#
|
35
|
-
# @return [ Result ] The operation response, if there is one.
|
36
|
-
#
|
37
|
-
# @since 2.5.0
|
38
|
-
def execute(server)
|
39
|
-
result = Result.new(server.with_connection do |connection|
|
40
|
-
connection.dispatch([ message(server) ], operation_id)
|
41
|
-
end)
|
42
|
-
server.update_cluster_time(result)
|
43
|
-
session.process(result) if session
|
44
|
-
result.validate!
|
45
|
-
end
|
46
|
-
|
47
|
-
private
|
48
|
-
|
49
|
-
# The query selector for this update user command operation.
|
50
|
-
#
|
51
|
-
# @return [ Hash ] The selector describing this update user operation.
|
52
|
-
#
|
53
|
-
# @since 2.0.0
|
54
|
-
def selector
|
55
|
-
{ :updateUser => user.name, :digestPassword => false }.merge(user.spec)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
# Copyright (C) 2014-2017 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 Operation
|
17
|
-
module Write
|
18
|
-
module Command
|
19
|
-
|
20
|
-
# Provides common behavior for write commands.
|
21
|
-
# Assigns an operation id when executed.
|
22
|
-
#
|
23
|
-
# @since 2.0.0
|
24
|
-
module Writable
|
25
|
-
include Limited
|
26
|
-
include UsesCommandOpMsg
|
27
|
-
|
28
|
-
# Execute the operation.
|
29
|
-
#
|
30
|
-
# @example Execute the operation.
|
31
|
-
# operation.execute(server)
|
32
|
-
#
|
33
|
-
# @param [ Mongo::Server ] server The server to send this operation to.
|
34
|
-
#
|
35
|
-
# @return [ Result ] The operation response, if there is one.
|
36
|
-
#
|
37
|
-
# @since 2.0.0
|
38
|
-
def execute(server)
|
39
|
-
server.with_connection do |connection|
|
40
|
-
connection.dispatch([ message(server) ], operation_id)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
def command_options
|
47
|
-
opts = { ordered: ordered? }
|
48
|
-
opts[:writeConcern] = write_concern.options if write_concern
|
49
|
-
opts[:collation] = collation if collation
|
50
|
-
opts[:bypassDocumentValidation] = true if bypass_document_validation
|
51
|
-
opts
|
52
|
-
end
|
53
|
-
|
54
|
-
# The wire protocol message for this write operation.
|
55
|
-
#
|
56
|
-
# @return [ Mongo::Protocol::Query ] Wire protocol message.
|
57
|
-
#
|
58
|
-
# @since 2.0.0
|
59
|
-
def message(server)
|
60
|
-
if server.features.op_msg_enabled?
|
61
|
-
command_op_msg(server, selector, options)
|
62
|
-
else
|
63
|
-
Protocol::Query.new(db_name, Database::COMMAND, selector, options)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,75 +0,0 @@
|
|
1
|
-
# Copyright (C) 2014-2017 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
|
-
require 'mongo/operation/write/delete/result'
|
16
|
-
|
17
|
-
module Mongo
|
18
|
-
module Operation
|
19
|
-
module Write
|
20
|
-
|
21
|
-
# A MongoDB delete operation.
|
22
|
-
#
|
23
|
-
# @note If a server with version >= 2.5.5 is selected, a write command
|
24
|
-
# operation will be created and sent instead.
|
25
|
-
#
|
26
|
-
# @example Create the delete operation.
|
27
|
-
# Write::Delete.new({
|
28
|
-
# :delete => { :q => { :foo => 1 }, :limit => 1 },
|
29
|
-
# :db_name => 'test',
|
30
|
-
# :coll_name => 'test_coll',
|
31
|
-
# :write_concern => write_concern
|
32
|
-
# })
|
33
|
-
#
|
34
|
-
# Initialization:
|
35
|
-
# param [ Hash ] spec The specifications for the delete.
|
36
|
-
#
|
37
|
-
# option spec :delete [ Hash ] The delete document.
|
38
|
-
# option spec :db_name [ String ] The name of the database on which
|
39
|
-
# the delete should be executed.
|
40
|
-
# option spec :coll_name [ String ] The name of the collection on which
|
41
|
-
# the delete should be executed.
|
42
|
-
# option spec :write_concern [ Mongo::WriteConcern ] The write concern
|
43
|
-
# for this operation.
|
44
|
-
# option spec :ordered [ true, false ] Whether the operations should be
|
45
|
-
# executed in order.
|
46
|
-
# option spec :options [Hash] Options for the command, if it ends up being a
|
47
|
-
# write command.
|
48
|
-
#
|
49
|
-
# @since 2.0.0
|
50
|
-
class Delete
|
51
|
-
include GLE
|
52
|
-
include WriteCommandEnabled
|
53
|
-
include Specifiable
|
54
|
-
|
55
|
-
private
|
56
|
-
|
57
|
-
def write_command_op
|
58
|
-
s = spec.merge(:deletes => [ delete ])
|
59
|
-
s.delete(:delete)
|
60
|
-
Command::Delete.new(s)
|
61
|
-
end
|
62
|
-
|
63
|
-
def has_collation?
|
64
|
-
delete[:collation] || delete[Operation::COLLATION]
|
65
|
-
end
|
66
|
-
|
67
|
-
def message(server)
|
68
|
-
selector = delete[Operation::Q]
|
69
|
-
opts = (delete[Operation::LIMIT] || 0) <= 0 ? {} : { :flags => [ :single_remove ] }
|
70
|
-
Protocol::Delete.new(db_name, coll_name, selector, opts)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
# Copyright (C) 2014-2017 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 Operation
|
17
|
-
module Write
|
18
|
-
|
19
|
-
# This module contains common functionality for operations that need to
|
20
|
-
# be followed by a GLE message.
|
21
|
-
#
|
22
|
-
# @since 2.1.0
|
23
|
-
module GLE
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
def execute_message(server)
|
28
|
-
server.with_connection do |connection|
|
29
|
-
result_class = self.class.const_defined?(:LegacyResult, false) ? self.class::LegacyResult :
|
30
|
-
self.class.const_defined?(:Result, false) ? self.class::Result : Result
|
31
|
-
result_class.new(connection.dispatch([ message(server), gle ].compact)).validate!
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def gle
|
36
|
-
wc = write_concern || WriteConcern.get(WriteConcern::DEFAULT)
|
37
|
-
if gle_message = wc.get_last_error
|
38
|
-
Protocol::Query.new(
|
39
|
-
db_name,
|
40
|
-
Database::COMMAND,
|
41
|
-
gle_message,
|
42
|
-
options.merge(limit: -1)
|
43
|
-
)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
# Copyright (C) 2014-2017 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 Operation
|
17
|
-
module Write
|
18
|
-
|
19
|
-
# This module provides functionality to ensure that documents contain
|
20
|
-
# an id field. Used by insert operations (Bulk, legacy, write command inserts).
|
21
|
-
#
|
22
|
-
# @since 2.1.0
|
23
|
-
module Idable
|
24
|
-
|
25
|
-
# The option for a custom id generator.
|
26
|
-
#
|
27
|
-
# @since 2.2.0
|
28
|
-
ID_GENERATOR = :id_generator.freeze
|
29
|
-
|
30
|
-
# Get the id generator.
|
31
|
-
#
|
32
|
-
# @example Get the id generator.
|
33
|
-
# idable.id_generator
|
34
|
-
#
|
35
|
-
# @return [ IdGenerator ] The default or custom id generator.
|
36
|
-
#
|
37
|
-
# @since 2.2.0
|
38
|
-
def id_generator
|
39
|
-
@id_generator ||= (spec[ID_GENERATOR] || ObjectIdGenerator.new)
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
def id(doc)
|
45
|
-
doc.respond_to?(:id) ? doc.id : (doc['_id'] || doc[:_id])
|
46
|
-
end
|
47
|
-
|
48
|
-
def has_id?(doc)
|
49
|
-
!!id(doc)
|
50
|
-
end
|
51
|
-
|
52
|
-
def ensure_ids(documents)
|
53
|
-
@ids ||= []
|
54
|
-
documents.collect do |doc|
|
55
|
-
doc_with_id = has_id?(doc) ? doc : doc.merge(_id: id_generator.generate)
|
56
|
-
@ids << id(doc_with_id)
|
57
|
-
doc_with_id
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
@@ -1,74 +0,0 @@
|
|
1
|
-
# Copyright (C) 2014-2017 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
|
-
require 'mongo/operation/write/insert/result'
|
16
|
-
|
17
|
-
module Mongo
|
18
|
-
module Operation
|
19
|
-
module Write
|
20
|
-
|
21
|
-
# A MongoDB insert operation.
|
22
|
-
#
|
23
|
-
# @note If a server with version >= 2.5.5 is being used, a write command
|
24
|
-
# operation will be created and sent instead.
|
25
|
-
#
|
26
|
-
# @example Create the new insert operation.
|
27
|
-
# Write::Insert.new({
|
28
|
-
# :documents => [{ :foo => 1 }],
|
29
|
-
# :db_name => 'test',
|
30
|
-
# :coll_name => 'test_coll',
|
31
|
-
# :write_concern => write_concern
|
32
|
-
# })
|
33
|
-
#
|
34
|
-
# Initialization:
|
35
|
-
# param [ Hash ] spec The specifications for the insert.
|
36
|
-
#
|
37
|
-
# option spec :documents [ Array ] The documents to insert.
|
38
|
-
# option spec :db_name [ String ] The name of the database.
|
39
|
-
# option spec :coll_name [ String ] The name of the collection.
|
40
|
-
# option spec :write_concern [ Mongo::WriteConcern ] The write concern.
|
41
|
-
# option spec :options [ Hash ] Options for the command, if it ends up being a
|
42
|
-
# write command.
|
43
|
-
#
|
44
|
-
# @since 2.0.0
|
45
|
-
class Insert
|
46
|
-
include GLE
|
47
|
-
include WriteCommandEnabled
|
48
|
-
include Specifiable
|
49
|
-
include Idable
|
50
|
-
|
51
|
-
private
|
52
|
-
|
53
|
-
def execute_write_command(server)
|
54
|
-
command_spec = spec.merge(:documents => ensure_ids(documents))
|
55
|
-
result = Result.new(Command::Insert.new(command_spec).execute(server), @ids)
|
56
|
-
server.update_cluster_time(result)
|
57
|
-
session.process(result) if session
|
58
|
-
result.validate!
|
59
|
-
end
|
60
|
-
|
61
|
-
def execute_message(server)
|
62
|
-
server.with_connection do |connection|
|
63
|
-
Result.new(connection.dispatch([ message(server), gle ].compact), @ids).validate!
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def message(server)
|
68
|
-
opts = !!options[:continue_on_error] ? { :flags => [:continue_on_error] } : {}
|
69
|
-
Protocol::Insert.new(db_name, coll_name, ensure_ids(documents), opts)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|