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
@@ -0,0 +1,39 @@
|
|
1
|
+
# Copyright (C) 2014-2018MongoDB, 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
|
+
class CollectionsInfo
|
18
|
+
|
19
|
+
# Defines custom behaviour of results when query the system.namespaces
|
20
|
+
# collection.
|
21
|
+
#
|
22
|
+
# @since 2.1.0
|
23
|
+
class Result < Operation::Result
|
24
|
+
|
25
|
+
# Get the namespace for the cursor.
|
26
|
+
#
|
27
|
+
# @example Get the namespace.
|
28
|
+
# result.namespace
|
29
|
+
#
|
30
|
+
# @return [ String ] The namespace.
|
31
|
+
#
|
32
|
+
# @since 2.1.0
|
33
|
+
def namespace
|
34
|
+
Database::NAMESPACES
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C)
|
1
|
+
# Copyright (C) 2015-2018 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.
|
@@ -12,32 +12,35 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
+
require 'mongo/operation/command/command'
|
16
|
+
require 'mongo/operation/command/op_msg'
|
17
|
+
|
15
18
|
module Mongo
|
16
19
|
module Operation
|
17
20
|
|
18
|
-
#
|
19
|
-
#
|
21
|
+
# A MongoDB general command operation.
|
22
|
+
#
|
23
|
+
# @api private
|
20
24
|
#
|
21
25
|
# @since 2.0.0
|
22
|
-
|
26
|
+
class Command
|
27
|
+
include Specifiable
|
23
28
|
|
24
29
|
# Execute the operation.
|
25
30
|
#
|
26
|
-
# @example
|
31
|
+
# @example
|
27
32
|
# operation.execute(server)
|
28
33
|
#
|
29
|
-
# @param [ Mongo::Server ] server The server to send
|
34
|
+
# @param [ Mongo::Server ] server The server to send the operation to.
|
30
35
|
#
|
31
|
-
# @return [ Result ] The operation
|
36
|
+
# @return [ Mongo::Operation::Result ] The operation result.
|
32
37
|
#
|
33
38
|
# @since 2.0.0
|
34
39
|
def execute(server)
|
35
|
-
server.
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
session.process(result) if session
|
40
|
-
result.validate!
|
40
|
+
if server.features.op_msg_enabled?
|
41
|
+
OpMsg.new(spec).execute(server)
|
42
|
+
else
|
43
|
+
Command.new(spec).execute(server)
|
41
44
|
end
|
42
45
|
end
|
43
46
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright (C) 2018 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
|
+
class Command
|
18
|
+
|
19
|
+
# A MongoDB command operation sent as a command message.
|
20
|
+
#
|
21
|
+
# @api private
|
22
|
+
#
|
23
|
+
# @since 2.5.2
|
24
|
+
class Command
|
25
|
+
include Specifiable
|
26
|
+
include Executable
|
27
|
+
include Limited
|
28
|
+
include ReadPreferenceSupported
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def message(server)
|
33
|
+
Protocol::Query.new(db_name, Database::COMMAND, command(server), options(server))
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# Copyright (C) 2018 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
|
+
class Command
|
18
|
+
|
19
|
+
# A MongoDB command operation sent as an op message.
|
20
|
+
#
|
21
|
+
# @api private
|
22
|
+
#
|
23
|
+
# @since 2.5.2
|
24
|
+
class OpMsg
|
25
|
+
include Specifiable
|
26
|
+
include Executable
|
27
|
+
include SessionsSupported
|
28
|
+
|
29
|
+
# Execute the operation.
|
30
|
+
#
|
31
|
+
# @example
|
32
|
+
# operation.execute(server)
|
33
|
+
#
|
34
|
+
# @param [ Mongo::Server ] server The server to send the operation to.
|
35
|
+
#
|
36
|
+
# @return [ Mongo::Operation::Result ] The operation result.
|
37
|
+
#
|
38
|
+
# @since 2.5.2
|
39
|
+
def execute(server)
|
40
|
+
result = Result.new(dispatch_message(server))
|
41
|
+
process_result(result, server)
|
42
|
+
result.validate!
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def message(server)
|
48
|
+
Protocol::Msg.new(flags, options, command(server))
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# Copyright (C) 2015-2018 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/count/command'
|
16
|
+
require 'mongo/operation/count/op_msg'
|
17
|
+
|
18
|
+
module Mongo
|
19
|
+
module Operation
|
20
|
+
|
21
|
+
# A MongoDB count command operation.
|
22
|
+
#
|
23
|
+
# @api private
|
24
|
+
#
|
25
|
+
# @since 2.0.0
|
26
|
+
class Count
|
27
|
+
include Specifiable
|
28
|
+
|
29
|
+
# Execute the operation.
|
30
|
+
#
|
31
|
+
# @example
|
32
|
+
# operation.execute(server)
|
33
|
+
#
|
34
|
+
# @param [ Mongo::Server ] server The server to send the operation to.
|
35
|
+
#
|
36
|
+
# @return [ Mongo::Operation::Result ] The operation result.
|
37
|
+
#
|
38
|
+
# @since 2.0.0
|
39
|
+
def execute(server)
|
40
|
+
if server.features.op_msg_enabled?
|
41
|
+
OpMsg.new(spec).execute(server)
|
42
|
+
else
|
43
|
+
Command.new(spec).execute(server)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright (C) 2018 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
|
+
class Count
|
18
|
+
|
19
|
+
# A MongoDB count operation sent as a command message.
|
20
|
+
#
|
21
|
+
# @api private
|
22
|
+
#
|
23
|
+
# @since 2.5.2
|
24
|
+
class Command
|
25
|
+
include Specifiable
|
26
|
+
include Executable
|
27
|
+
include Limited
|
28
|
+
include ReadPreferenceSupported
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def message(server)
|
33
|
+
Protocol::Query.new(db_name, Database::COMMAND, command(server), options(server))
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright (C) 2018 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
|
+
class Count
|
18
|
+
|
19
|
+
# A MongoDB count operation sent as an op message.
|
20
|
+
#
|
21
|
+
# @api private
|
22
|
+
#
|
23
|
+
# @since 2.5.2
|
24
|
+
class OpMsg
|
25
|
+
include Specifiable
|
26
|
+
include Executable
|
27
|
+
include SessionsSupported
|
28
|
+
include CausalConsistencySupported
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def message(server)
|
33
|
+
Protocol::Msg.new(flags, options, command(server))
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# Copyright (C) 2015-2018 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/create/command'
|
16
|
+
require 'mongo/operation/create/op_msg'
|
17
|
+
|
18
|
+
module Mongo
|
19
|
+
module Operation
|
20
|
+
|
21
|
+
# A MongoDB create collection command operation.
|
22
|
+
#
|
23
|
+
# @api private
|
24
|
+
#
|
25
|
+
# @since 2.0.0
|
26
|
+
class Create
|
27
|
+
include Specifiable
|
28
|
+
|
29
|
+
# Execute the operation.
|
30
|
+
#
|
31
|
+
# @example
|
32
|
+
# operation.execute(server)
|
33
|
+
#
|
34
|
+
# @param [ Mongo::Server ] server The server to send the operation to.
|
35
|
+
#
|
36
|
+
# @return [ Mongo::Operation::Result ] The operation result.
|
37
|
+
#
|
38
|
+
# @since 2.0.0
|
39
|
+
def execute(server)
|
40
|
+
if server.features.op_msg_enabled?
|
41
|
+
OpMsg.new(spec).execute(server)
|
42
|
+
else
|
43
|
+
Command.new(spec).execute(server)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright (C) 2018 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
|
+
class Create
|
18
|
+
|
19
|
+
# A MongoDB count operation sent as a command message.
|
20
|
+
#
|
21
|
+
# @api private
|
22
|
+
#
|
23
|
+
# @since 2.5.2
|
24
|
+
class Command
|
25
|
+
include Specifiable
|
26
|
+
include Executable
|
27
|
+
include Limited
|
28
|
+
include WriteConcernSupported
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def message(server)
|
33
|
+
Protocol::Query.new(db_name, Database::COMMAND, command(server), options(server))
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# Copyright (C) 2018 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
|
+
class Create
|
18
|
+
|
19
|
+
# A MongoDB create collection operation sent as an op message.
|
20
|
+
#
|
21
|
+
# @api private
|
22
|
+
#
|
23
|
+
# @since 2.5.2
|
24
|
+
class OpMsg
|
25
|
+
include Specifiable
|
26
|
+
include Executable
|
27
|
+
include SessionsSupported
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def message(server)
|
32
|
+
Protocol::Msg.new(flags, options, command(server))
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# Copyright (C) 2015-2018 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/create_index/command'
|
16
|
+
require 'mongo/operation/create_index/op_msg'
|
17
|
+
|
18
|
+
module Mongo
|
19
|
+
module Operation
|
20
|
+
|
21
|
+
# A MongoDB create index command operation.
|
22
|
+
#
|
23
|
+
# @api private
|
24
|
+
#
|
25
|
+
# @since 2.0.0
|
26
|
+
class CreateIndex
|
27
|
+
include Specifiable
|
28
|
+
|
29
|
+
# Execute the operation.
|
30
|
+
#
|
31
|
+
# @example
|
32
|
+
# operation.execute(server)
|
33
|
+
#
|
34
|
+
# @param [ Mongo::Server ] server The server to send the operation to.
|
35
|
+
#
|
36
|
+
# @return [ Mongo::Operation::Result ] The operation result.
|
37
|
+
#
|
38
|
+
# @since 2.0.0
|
39
|
+
def execute(server)
|
40
|
+
if server.features.op_msg_enabled?
|
41
|
+
OpMsg.new(spec).execute(server)
|
42
|
+
else
|
43
|
+
Command.new(spec).execute(server)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|