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.
Files changed (275) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +3 -2
  3. data.tar.gz.sig +0 -0
  4. data/Rakefile +1 -1
  5. data/lib/mongo/auth/user/view.rb +4 -4
  6. data/lib/mongo/bulk_write.rb +14 -19
  7. data/lib/mongo/cluster.rb +4 -2
  8. data/lib/mongo/cluster/app_metadata.rb +1 -1
  9. data/lib/mongo/cluster/reapers/cursor_reaper.rb +1 -1
  10. data/lib/mongo/collection.rb +13 -13
  11. data/lib/mongo/collection/view.rb +2 -1
  12. data/lib/mongo/collection/view/aggregation.rb +1 -1
  13. data/lib/mongo/collection/view/change_stream.rb +1 -1
  14. data/lib/mongo/collection/view/iterable.rb +4 -4
  15. data/lib/mongo/collection/view/map_reduce.rb +3 -3
  16. data/lib/mongo/collection/view/readable.rb +26 -20
  17. data/lib/mongo/collection/view/writable.rb +12 -12
  18. data/lib/mongo/cursor.rb +4 -7
  19. data/lib/mongo/database.rb +2 -2
  20. data/lib/mongo/database/view.rb +1 -1
  21. data/lib/mongo/grid/stream/write.rb +1 -1
  22. data/lib/mongo/index/view.rb +3 -3
  23. data/lib/mongo/operation.rb +38 -24
  24. data/lib/mongo/operation/aggregate.rb +53 -0
  25. data/lib/mongo/operation/aggregate/command.rb +59 -0
  26. data/lib/mongo/operation/aggregate/op_msg.rb +54 -0
  27. data/lib/mongo/operation/aggregate/result.rb +87 -0
  28. data/lib/mongo/operation/collections_info.rb +62 -0
  29. data/lib/mongo/operation/collections_info/result.rb +39 -0
  30. data/lib/mongo/operation/{executable.rb → command.rb} +16 -13
  31. data/lib/mongo/operation/command/command.rb +38 -0
  32. data/lib/mongo/operation/command/op_msg.rb +53 -0
  33. data/lib/mongo/operation/count.rb +48 -0
  34. data/lib/mongo/operation/count/command.rb +38 -0
  35. data/lib/mongo/operation/count/op_msg.rb +38 -0
  36. data/lib/mongo/operation/create.rb +48 -0
  37. data/lib/mongo/operation/create/command.rb +38 -0
  38. data/lib/mongo/operation/create/op_msg.rb +37 -0
  39. data/lib/mongo/operation/create_index.rb +48 -0
  40. data/lib/mongo/operation/create_index/command.rb +42 -0
  41. data/lib/mongo/operation/create_index/op_msg.rb +41 -0
  42. data/lib/mongo/operation/create_user.rb +48 -0
  43. data/lib/mongo/operation/{commands → create_user}/command.rb +13 -19
  44. data/lib/mongo/operation/create_user/op_msg.rb +41 -0
  45. data/lib/mongo/operation/delete.rb +38 -0
  46. data/lib/mongo/operation/delete/bulk_result.rb +46 -0
  47. data/lib/mongo/operation/delete/command.rb +59 -0
  48. data/lib/mongo/operation/delete/legacy.rb +69 -0
  49. data/lib/mongo/operation/delete/op_msg.rb +60 -0
  50. data/lib/mongo/operation/{write/delete → delete}/result.rb +18 -16
  51. data/lib/mongo/operation/distinct.rb +48 -0
  52. data/lib/mongo/operation/distinct/command.rb +38 -0
  53. data/lib/mongo/operation/distinct/op_msg.rb +38 -0
  54. data/lib/mongo/operation/drop.rb +48 -0
  55. data/lib/mongo/operation/drop/command.rb +38 -0
  56. data/lib/mongo/operation/{commands/count.rb → drop/op_msg.rb} +16 -6
  57. data/lib/mongo/operation/drop_database.rb +48 -0
  58. data/lib/mongo/operation/drop_database/command.rb +38 -0
  59. data/lib/mongo/operation/drop_database/op_msg.rb +37 -0
  60. data/lib/mongo/operation/drop_index.rb +48 -0
  61. data/lib/mongo/operation/drop_index/command.rb +42 -0
  62. data/lib/mongo/operation/{limited.rb → drop_index/op_msg.rb} +19 -15
  63. data/lib/mongo/operation/explain.rb +52 -0
  64. data/lib/mongo/operation/explain/command.rb +54 -0
  65. data/lib/mongo/operation/explain/legacy.rb +53 -0
  66. data/lib/mongo/operation/explain/op_msg.rb +54 -0
  67. data/lib/mongo/operation/explain/result.rb +50 -0
  68. data/lib/mongo/operation/find.rb +52 -0
  69. data/lib/mongo/operation/find/command.rb +54 -0
  70. data/lib/mongo/operation/find/legacy.rb +55 -0
  71. data/lib/mongo/operation/{read/query → find/legacy}/result.rb +3 -3
  72. data/lib/mongo/operation/find/op_msg.rb +59 -0
  73. data/lib/mongo/operation/find/result.rb +60 -0
  74. data/lib/mongo/operation/{commands/users_info/result.rb → get_more.rb} +20 -22
  75. data/lib/mongo/operation/get_more/command.rb +54 -0
  76. data/lib/mongo/operation/{commands/find.rb → get_more/legacy.rb} +15 -8
  77. data/lib/mongo/operation/get_more/op_msg.rb +58 -0
  78. data/lib/mongo/operation/get_more/result.rb +60 -0
  79. data/lib/mongo/operation/indexes.rb +52 -0
  80. data/lib/mongo/operation/indexes/command.rb +54 -0
  81. data/lib/mongo/operation/indexes/legacy.rb +57 -0
  82. data/lib/mongo/operation/indexes/op_msg.rb +54 -0
  83. data/lib/mongo/operation/indexes/result.rb +97 -0
  84. data/lib/mongo/operation/insert.rb +40 -0
  85. data/lib/mongo/operation/insert/bulk_result.rb +70 -0
  86. data/lib/mongo/operation/insert/command.rb +65 -0
  87. data/lib/mongo/operation/insert/legacy.rb +72 -0
  88. data/lib/mongo/operation/insert/op_msg.rb +61 -0
  89. data/lib/mongo/operation/insert/result.rb +64 -0
  90. data/lib/mongo/operation/kill_cursors.rb +25 -14
  91. data/lib/mongo/operation/{takes_write_concern.rb → kill_cursors/command.rb} +14 -12
  92. data/lib/mongo/operation/kill_cursors/legacy.rb +37 -0
  93. data/lib/mongo/operation/kill_cursors/op_msg.rb +37 -0
  94. data/lib/mongo/operation/list_collections.rb +49 -0
  95. data/lib/mongo/operation/list_collections/command.rb +60 -0
  96. data/lib/mongo/operation/list_collections/op_msg.rb +53 -0
  97. data/lib/mongo/operation/list_collections/result.rb +92 -0
  98. data/lib/mongo/operation/map_reduce.rb +49 -0
  99. data/lib/mongo/operation/map_reduce/command.rb +55 -0
  100. data/lib/mongo/operation/map_reduce/op_msg.rb +54 -0
  101. data/lib/mongo/operation/map_reduce/result.rb +129 -0
  102. data/lib/mongo/operation/parallel_scan.rb +49 -0
  103. data/lib/mongo/operation/parallel_scan/command.rb +67 -0
  104. data/lib/mongo/operation/parallel_scan/op_msg.rb +61 -0
  105. data/lib/mongo/operation/parallel_scan/result.rb +61 -0
  106. data/lib/mongo/operation/remove_user.rb +48 -0
  107. data/lib/mongo/operation/remove_user/command.rb +42 -0
  108. data/lib/mongo/operation/remove_user/op_msg.rb +41 -0
  109. data/lib/mongo/operation/result.rb +3 -1
  110. data/lib/mongo/operation/shared/bypass_document_validation.rb +36 -0
  111. data/lib/mongo/operation/{causally_consistent.rb → shared/causal_consistency_supported.rb} +5 -5
  112. data/lib/mongo/operation/shared/executable.rb +45 -0
  113. data/lib/mongo/operation/shared/idable.rb +64 -0
  114. data/lib/mongo/operation/{commands/distinct.rb → shared/limited.rb} +10 -7
  115. data/lib/mongo/operation/{object_id_generator.rb → shared/object_id_generator.rb} +2 -2
  116. data/lib/mongo/operation/{read_preference.rb → shared/read_preference_supported.rb} +14 -24
  117. data/lib/mongo/operation/shared/result/aggregatable.rb +75 -0
  118. data/lib/mongo/operation/shared/sessions_supported.rb +79 -0
  119. data/lib/mongo/operation/{specifiable.rb → shared/specifiable.rb} +40 -4
  120. data/lib/mongo/operation/shared/write.rb +81 -0
  121. data/lib/mongo/operation/shared/write_concern_supported.rb +39 -0
  122. data/lib/mongo/operation/update.rb +38 -0
  123. data/lib/mongo/operation/update/bulk_result.rb +126 -0
  124. data/lib/mongo/operation/update/command.rb +60 -0
  125. data/lib/mongo/operation/update/legacy.rb +80 -0
  126. data/lib/mongo/operation/{write/update → update/legacy}/result.rb +4 -82
  127. data/lib/mongo/operation/update/op_msg.rb +60 -0
  128. data/lib/mongo/operation/update/result.rb +102 -0
  129. data/lib/mongo/operation/update_user.rb +48 -0
  130. data/lib/mongo/operation/update_user/command.rb +41 -0
  131. data/lib/mongo/operation/update_user/op_msg.rb +41 -0
  132. data/lib/mongo/operation/users_info.rb +49 -0
  133. data/lib/mongo/operation/users_info/command.rb +58 -0
  134. data/lib/mongo/operation/users_info/op_msg.rb +57 -0
  135. data/lib/mongo/operation/{commands/collections_info → users_info}/result.rb +18 -17
  136. data/lib/mongo/server.rb +3 -5
  137. data/lib/mongo/server/connectable.rb +3 -3
  138. data/lib/mongo/server/connection.rb +14 -0
  139. data/lib/mongo/server_selector.rb +1 -1
  140. data/lib/mongo/server_selector/selectable.rb +3 -12
  141. data/lib/mongo/session.rb +13 -1
  142. data/lib/mongo/session/session_pool.rb +1 -1
  143. data/lib/mongo/version.rb +1 -1
  144. data/spec/mongo/client_spec.rb +15 -22
  145. data/spec/mongo/cluster/app_metadata_spec.rb +19 -3
  146. data/spec/mongo/cluster/cursor_reaper_spec.rb +37 -0
  147. data/spec/mongo/cluster_spec.rb +2 -2
  148. data/spec/mongo/collection/view/change_stream_spec.rb +2 -2
  149. data/spec/mongo/collection_spec.rb +105 -14
  150. data/spec/mongo/cursor_spec.rb +11 -11
  151. data/spec/mongo/grid/fs_bucket_spec.rb +5 -0
  152. data/spec/mongo/max_staleness_spec.rb +3 -1
  153. data/spec/mongo/operation/{commands/aggregate → aggregate}/result_spec.rb +1 -1
  154. data/spec/mongo/operation/{commands/aggregate_spec.rb → aggregate_spec.rb} +1 -1
  155. data/spec/mongo/operation/{commands/collections_info_spec.rb → collections_info_spec.rb} +4 -2
  156. data/spec/mongo/operation/{commands/command_spec.rb → command_spec.rb} +1 -1
  157. data/spec/mongo/operation/{write/command/create_index_spec.rb → create_index_spec.rb} +1 -1
  158. data/spec/mongo/operation/{write/create_user_spec.rb → create_user_spec.rb} +1 -1
  159. data/spec/mongo/operation/{write/bulk/delete_spec.rb → delete/bulk_spec.rb} +8 -8
  160. data/spec/mongo/operation/delete/command_spec.rb +111 -0
  161. data/spec/mongo/operation/{write/command/delete_spec.rb → delete/op_msg_spec.rb} +40 -34
  162. data/spec/mongo/operation/{write/delete_spec.rb → delete_spec.rb} +7 -7
  163. data/spec/mongo/operation/{write/command/drop_index_spec.rb → drop_index_spec.rb} +1 -1
  164. data/spec/mongo/operation/{read/query_spec.rb → find/legacy_spec.rb} +2 -2
  165. data/spec/mongo/operation/{read/get_more_spec.rb → get_more_spec.rb} +3 -3
  166. data/spec/mongo/operation/{commands/indexes_spec.rb → indexes_spec.rb} +6 -4
  167. data/spec/mongo/operation/{write/bulk/insert_spec.rb → insert/bulk_spec.rb} +9 -9
  168. data/spec/mongo/operation/insert/command_spec.rb +110 -0
  169. data/spec/mongo/operation/{write/command/insert_spec.rb → insert/op_msg_spec.rb} +51 -41
  170. data/spec/mongo/operation/{write/insert_spec.rb → insert_spec.rb} +2 -2
  171. data/spec/mongo/operation/kill_cursors_spec.rb +2 -2
  172. data/spec/mongo/operation/limited_spec.rb +3 -3
  173. data/spec/mongo/operation/{commands/map_reduce_spec.rb → map_reduce_spec.rb} +1 -1
  174. data/spec/mongo/operation/read_preference_spec.rb +2 -2
  175. data/spec/mongo/operation/{write/command/remove_user_spec.rb → remove_user_spec.rb} +1 -1
  176. data/spec/mongo/operation/{write/bulk/update_spec.rb → update/bulk_spec.rb} +8 -8
  177. data/spec/mongo/operation/update/command_spec.rb +114 -0
  178. data/spec/mongo/operation/{write/command/update_spec.rb → update/op_msg_spec.rb} +49 -40
  179. data/spec/mongo/operation/{write/update_spec.rb → update_spec.rb} +6 -6
  180. data/spec/mongo/operation/{write/command/update_user_spec.rb → update_user_spec.rb} +1 -1
  181. data/spec/mongo/server/connection_spec.rb +0 -22
  182. data/spec/mongo/server_selector_spec.rb +55 -0
  183. data/spec/mongo/server_spec.rb +0 -42
  184. data/spec/mongo/session/session_pool_spec.rb +1 -1
  185. data/spec/mongo/uri/srv_protocol_spec.rb +2 -2
  186. data/spec/mongo/uri_spec.rb +2 -2
  187. data/spec/support/gridfs_tests/delete.yml +4 -38
  188. data/spec/support/gridfs_tests/download.yml +12 -30
  189. data/spec/support/server_selection.rb +1 -1
  190. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest.yml +0 -1
  191. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest_multiple.yml +0 -1
  192. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest_non_matching.yml +0 -1
  193. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PossiblePrimary.yml +15 -0
  194. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PossiblePrimaryNearest.yml +15 -0
  195. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Primary.yml +0 -3
  196. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred.yml +0 -1
  197. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred_non_matching.yml +0 -1
  198. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary.yml +0 -1
  199. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred.yml +0 -1
  200. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred_non_matching.yml +0 -1
  201. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary_non_matching.yml +0 -1
  202. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest.yml +0 -1
  203. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest_multiple.yml +0 -1
  204. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest_non_matching.yml +0 -1
  205. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Primary.yml +0 -3
  206. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred.yml +0 -1
  207. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred_non_matching.yml +0 -1
  208. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary.yml +0 -1
  209. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred.yml +0 -1
  210. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred_non_matching.yml +0 -1
  211. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary_non_matching.yml +0 -1
  212. data/spec/support/server_selection/selection/Sharded/read/Nearest.yml +21 -0
  213. data/spec/support/server_selection/selection/Sharded/read/Primary.yml +19 -0
  214. data/spec/support/server_selection/selection/Sharded/read/PrimaryPreferred.yml +21 -0
  215. data/spec/support/server_selection/selection/Sharded/read/Secondary.yml +21 -0
  216. data/spec/support/server_selection/selection/Sharded/read/SecondaryPreferred.yml +0 -5
  217. data/spec/support/server_selection/selection/Single/read/SecondaryPreferred.yml +0 -1
  218. data/spec/support/server_selection/selection/Unknown/read/SecondaryPreferred.yml +0 -1
  219. data/spec/support/shared/session.rb +46 -5
  220. metadata +174 -116
  221. metadata.gz.sig +1 -2
  222. data/lib/mongo/operation/commands.rb +0 -31
  223. data/lib/mongo/operation/commands/aggregate.rb +0 -63
  224. data/lib/mongo/operation/commands/aggregate/result.rb +0 -89
  225. data/lib/mongo/operation/commands/collections_info.rb +0 -71
  226. data/lib/mongo/operation/commands/create.rb +0 -49
  227. data/lib/mongo/operation/commands/drop.rb +0 -49
  228. data/lib/mongo/operation/commands/drop_database.rb +0 -49
  229. data/lib/mongo/operation/commands/explain.rb +0 -27
  230. data/lib/mongo/operation/commands/explain/result.rb +0 -52
  231. data/lib/mongo/operation/commands/find/result.rb +0 -62
  232. data/lib/mongo/operation/commands/get_more.rb +0 -27
  233. data/lib/mongo/operation/commands/get_more/result.rb +0 -62
  234. data/lib/mongo/operation/commands/indexes.rb +0 -73
  235. data/lib/mongo/operation/commands/list_collections.rb +0 -48
  236. data/lib/mongo/operation/commands/list_collections/result.rb +0 -94
  237. data/lib/mongo/operation/commands/list_indexes.rb +0 -48
  238. data/lib/mongo/operation/commands/list_indexes/result.rb +0 -98
  239. data/lib/mongo/operation/commands/map_reduce.rb +0 -65
  240. data/lib/mongo/operation/commands/map_reduce/result.rb +0 -131
  241. data/lib/mongo/operation/commands/parallel_scan.rb +0 -54
  242. data/lib/mongo/operation/commands/parallel_scan/result.rb +0 -64
  243. data/lib/mongo/operation/commands/users_info.rb +0 -52
  244. data/lib/mongo/operation/read.rb +0 -16
  245. data/lib/mongo/operation/read/get_more.rb +0 -52
  246. data/lib/mongo/operation/read/query.rb +0 -55
  247. data/lib/mongo/operation/uses_command_op_msg.rb +0 -78
  248. data/lib/mongo/operation/write.rb +0 -22
  249. data/lib/mongo/operation/write/bulk.rb +0 -20
  250. data/lib/mongo/operation/write/bulk/bulkable.rb +0 -82
  251. data/lib/mongo/operation/write/bulk/delete.rb +0 -71
  252. data/lib/mongo/operation/write/bulk/delete/result.rb +0 -71
  253. data/lib/mongo/operation/write/bulk/insert.rb +0 -96
  254. data/lib/mongo/operation/write/bulk/insert/result.rb +0 -129
  255. data/lib/mongo/operation/write/bulk/legacy_mergable.rb +0 -87
  256. data/lib/mongo/operation/write/bulk/mergable.rb +0 -73
  257. data/lib/mongo/operation/write/bulk/update.rb +0 -81
  258. data/lib/mongo/operation/write/bulk/update/result.rb +0 -196
  259. data/lib/mongo/operation/write/command.rb +0 -23
  260. data/lib/mongo/operation/write/command/create_index.rb +0 -79
  261. data/lib/mongo/operation/write/command/create_user.rb +0 -61
  262. data/lib/mongo/operation/write/command/delete.rb +0 -79
  263. data/lib/mongo/operation/write/command/drop_index.rb +0 -80
  264. data/lib/mongo/operation/write/command/insert.rb +0 -69
  265. data/lib/mongo/operation/write/command/remove_user.rb +0 -60
  266. data/lib/mongo/operation/write/command/update.rb +0 -77
  267. data/lib/mongo/operation/write/command/update_user.rb +0 -61
  268. data/lib/mongo/operation/write/command/writable.rb +0 -70
  269. data/lib/mongo/operation/write/delete.rb +0 -75
  270. data/lib/mongo/operation/write/gle.rb +0 -49
  271. data/lib/mongo/operation/write/idable.rb +0 -63
  272. data/lib/mongo/operation/write/insert.rb +0 -74
  273. data/lib/mongo/operation/write/insert/result.rb +0 -62
  274. data/lib/mongo/operation/write/update.rb +0 -91
  275. data/lib/mongo/operation/write/write_command_enabled.rb +0 -77
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2014-2017 MongoDB, Inc.
1
+ # Copyright (C) 2014-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.
@@ -14,25 +14,27 @@
14
14
 
15
15
  module Mongo
16
16
  module Operation
17
- module Write
18
- class Delete
17
+ class Delete
19
18
 
20
- # Defines custom behaviour of results for a delete.
19
+ # Defines custom behaviour of results for a delete.
20
+ #
21
+ # @since 2.0.0
22
+ class Result < Operation::Result
23
+
24
+ # Get the number of documents deleted.
25
+ #
26
+ # @example Get the deleted count.
27
+ # result.deleted_count
28
+ #
29
+ # @return [ Integer ] The deleted count.
21
30
  #
22
31
  # @since 2.0.0
23
- class Result < Operation::Result
32
+ def deleted_count
33
+ n
34
+ end
24
35
 
25
- # Get the number of documents deleted.
26
- #
27
- # @example Get the deleted count.
28
- # result.deleted_count
29
- #
30
- # @return [ Integer ] The deleted count.
31
- #
32
- # @since 2.0.0
33
- def deleted_count
34
- n
35
- end
36
+ def bulk_result
37
+ BulkResult.new(@replies)
36
38
  end
37
39
  end
38
40
  end
@@ -0,0 +1,48 @@
1
+ # Copyright (C) 2017-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/distinct/command'
16
+ require 'mongo/operation/distinct/op_msg'
17
+
18
+ module Mongo
19
+ module Operation
20
+
21
+ # A MongoDB distinct command operation.
22
+ #
23
+ # @api private
24
+ #
25
+ # @since 2.5.0
26
+ class Distinct
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.5.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 Distinct
18
+
19
+ # A MongoDB distinct 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 Distinct
18
+
19
+ # A MongoDB distinct 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/drop/command'
16
+ require 'mongo/operation/drop/op_msg'
17
+
18
+ module Mongo
19
+ module Operation
20
+
21
+ # A MongoDB drop collection operation.
22
+ #
23
+ # @api private
24
+ #
25
+ # @since 2.4.0
26
+ class Drop
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.4.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 Drop
18
+
19
+ # A MongoDB drop collection 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)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2017 MongoDB, Inc.
1
+ # Copyright (C) 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.
@@ -14,13 +14,23 @@
14
14
 
15
15
  module Mongo
16
16
  module Operation
17
- module Commands
17
+ class Drop
18
18
 
19
- # Encapsulates behaviour for executing a count command.
19
+ # A MongoDB drop collection operation sent as an op message.
20
20
  #
21
- # @since 2.5.0
22
- class Count < Command
23
- include CausallyConsistent
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
24
34
  end
25
35
  end
26
36
  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/drop_database/command'
16
+ require 'mongo/operation/drop_database/op_msg'
17
+
18
+ module Mongo
19
+ module Operation
20
+
21
+ # A MongoDB drop database operation.
22
+ #
23
+ # @api private
24
+ #
25
+ # @since 2.4.0
26
+ class DropDatabase
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.4.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 DropDatabase
18
+
19
+ # A MongoDB dropdatabase 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)
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 DropDatabase
18
+
19
+ # A MongoDB drop database 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/drop_index/command'
16
+ require 'mongo/operation/drop_index/op_msg'
17
+
18
+ module Mongo
19
+ module Operation
20
+
21
+ # A MongoDB drop index operation.
22
+ #
23
+ # @api private
24
+ #
25
+ # @since 2.0.0
26
+ class DropIndex
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