mongo 2.1.0.beta → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.md +10 -3
- data/Rakefile +1 -7
- data/lib/mongo/address/ipv4.rb +6 -1
- data/lib/mongo/address/unix.rb +2 -2
- data/lib/mongo/address.rb +32 -10
- data/lib/mongo/auth/cr/conversation.rb +1 -1
- data/lib/mongo/auth/ldap/conversation.rb +7 -3
- data/lib/mongo/auth/scram/conversation.rb +9 -3
- data/lib/mongo/auth/user/view.rb +23 -2
- data/lib/mongo/auth/x509/conversation.rb +1 -1
- data/lib/mongo/bulk_write/combineable.rb +51 -0
- data/lib/mongo/bulk_write/ordered_combiner.rb +55 -0
- data/lib/mongo/bulk_write/result.rb +61 -8
- data/lib/mongo/bulk_write/result_combiner.rb +117 -0
- data/lib/mongo/bulk_write/transformable.rb +132 -0
- data/lib/mongo/bulk_write/unordered_combiner.rb +52 -0
- data/lib/mongo/bulk_write/validatable.rb +62 -0
- data/lib/mongo/bulk_write.rb +164 -23
- data/lib/mongo/client.rb +75 -18
- data/lib/mongo/cluster/topology/replica_set.rb +8 -6
- data/lib/mongo/cluster/topology/unknown.rb +5 -2
- data/lib/mongo/cluster.rb +85 -5
- data/lib/mongo/collection/view/aggregation.rb +19 -45
- data/lib/mongo/collection/view/builder/aggregation.rb +98 -0
- data/lib/mongo/collection/view/builder/find_command.rb +111 -0
- data/lib/mongo/collection/view/builder/flags.rb +62 -0
- data/lib/mongo/collection/view/builder/map_reduce.rb +134 -0
- data/lib/mongo/collection/view/builder/modifiers.rb +80 -0
- data/lib/mongo/collection/view/builder/op_query.rb +83 -0
- data/lib/mongo/collection/view/builder.rb +20 -0
- data/lib/mongo/collection/view/explainable.rb +15 -0
- data/lib/mongo/collection/view/immutable.rb +4 -11
- data/lib/mongo/collection/view/iterable.rb +40 -5
- data/lib/mongo/collection/view/map_reduce.rb +67 -37
- data/lib/mongo/collection/view/readable.rb +114 -100
- data/lib/mongo/collection/view/writable.rb +46 -22
- data/lib/mongo/collection/view.rb +25 -22
- data/lib/mongo/collection.rb +130 -12
- data/lib/mongo/cursor/builder/get_more_command.rb +71 -0
- data/lib/mongo/cursor/builder/kill_cursors_command.rb +62 -0
- data/lib/mongo/cursor/builder/op_get_more.rb +61 -0
- data/lib/mongo/cursor/builder/op_kill_cursors.rb +56 -0
- data/lib/mongo/cursor/builder.rb +18 -0
- data/lib/mongo/cursor.rb +76 -21
- data/lib/mongo/database/view.rb +11 -6
- data/lib/mongo/database.rb +16 -6
- data/lib/mongo/dbref.rb +9 -9
- data/lib/mongo/{bulk_write/unordered_bulk_write.rb → error/closed_stream.rb} +12 -21
- data/lib/mongo/{bulk_write/ordered_bulk_write.rb → error/extra_file_chunk.rb} +13 -27
- data/lib/mongo/error/file_not_found.rb +37 -0
- data/lib/mongo/error/invalid_file.rb +2 -2
- data/lib/mongo/error/invalid_file_revision.rb +37 -0
- data/lib/mongo/error/invalid_uri.rb +5 -4
- data/lib/mongo/error/invalid_write_concern.rb +35 -0
- data/lib/mongo/error/missing_file_chunk.rb +38 -0
- data/lib/mongo/error/operation_failure.rb +33 -2
- data/lib/mongo/error/unchangeable_collection_option.rb +38 -0
- data/lib/mongo/error/unexpected_chunk_length.rb +39 -0
- data/lib/mongo/error.rb +8 -0
- data/lib/mongo/grid/file/chunk.rb +9 -9
- data/lib/mongo/grid/file/{metadata.rb → info.rb} +41 -39
- data/lib/mongo/grid/file.rb +12 -9
- data/lib/mongo/grid/fs_bucket.rb +448 -0
- data/lib/mongo/grid/stream/read.rb +208 -0
- data/lib/mongo/grid/stream/write.rb +187 -0
- data/lib/mongo/grid/stream.rb +64 -0
- data/lib/mongo/grid.rb +2 -1
- data/lib/mongo/index/view.rb +7 -4
- data/lib/mongo/index.rb +5 -0
- data/lib/mongo/loggable.rb +34 -57
- data/lib/mongo/logger.rb +16 -78
- data/lib/mongo/monitoring/command_log_subscriber.rb +38 -14
- data/lib/mongo/monitoring/event/command_started.rb +2 -1
- data/lib/mongo/monitoring/event/command_succeeded.rb +24 -2
- data/lib/mongo/monitoring/event/secure.rb +58 -0
- data/lib/mongo/monitoring/event.rb +1 -0
- data/lib/mongo/monitoring/publishable.rb +22 -12
- data/lib/mongo/monitoring.rb +1 -5
- data/lib/mongo/operation/commands/aggregate/result.rb +89 -0
- data/lib/mongo/operation/commands/aggregate.rb +64 -0
- data/lib/mongo/operation/commands/collections_info/result.rb +41 -0
- data/lib/mongo/operation/{read → commands}/collections_info.rb +5 -3
- data/lib/mongo/operation/commands/command.rb +47 -0
- data/lib/mongo/operation/commands/find/result.rb +62 -0
- data/lib/mongo/operation/commands/find.rb +27 -0
- data/lib/mongo/operation/commands/get_more/result.rb +62 -0
- data/lib/mongo/operation/commands/get_more.rb +27 -0
- data/lib/mongo/operation/{read → commands}/indexes.rb +9 -6
- data/lib/mongo/operation/{list_collections → commands/list_collections}/result.rb +1 -21
- data/lib/mongo/operation/{read → commands}/list_collections.rb +4 -32
- data/lib/mongo/operation/{list_indexes → commands/list_indexes}/result.rb +1 -21
- data/lib/mongo/operation/{read → commands}/list_indexes.rb +3 -33
- data/lib/mongo/operation/commands/map_reduce/result.rb +119 -0
- data/lib/mongo/operation/commands/map_reduce.rb +49 -0
- data/lib/mongo/operation/commands/parallel_scan/result.rb +64 -0
- data/lib/mongo/operation/commands/parallel_scan.rb +52 -0
- data/lib/mongo/operation/commands/user_query.rb +71 -0
- data/lib/mongo/operation/commands/users_info/result.rb +38 -0
- data/lib/mongo/operation/commands/users_info.rb +48 -0
- data/lib/mongo/operation/commands.rb +26 -0
- data/lib/mongo/operation/executable.rb +4 -68
- data/lib/mongo/operation/kill_cursors.rb +3 -3
- data/lib/mongo/operation/object_id_generator.rb +36 -0
- data/lib/mongo/operation/read/get_more.rb +2 -22
- data/lib/mongo/operation/read/query/result.rb +40 -0
- data/lib/mongo/operation/read/query.rb +4 -21
- data/lib/mongo/operation/read.rb +0 -4
- data/lib/mongo/operation/{read_preferrable.rb → read_preference.rb} +3 -2
- data/lib/mongo/operation/result.rb +43 -1
- data/lib/mongo/operation/specifiable.rb +59 -1
- data/lib/mongo/operation/write/bulk/bulkable.rb +83 -0
- data/lib/mongo/operation/write/bulk/delete/result.rb +67 -0
- data/lib/mongo/operation/write/bulk/delete.rb +71 -0
- data/lib/mongo/operation/write/bulk/insert/result.rb +129 -0
- data/lib/mongo/operation/write/bulk/insert.rb +96 -0
- data/lib/mongo/operation/write/bulk/legacy_mergable.rb +87 -0
- data/lib/mongo/operation/write/bulk/mergable.rb +71 -0
- data/lib/mongo/operation/write/bulk/update/result.rb +174 -0
- data/lib/mongo/operation/write/bulk/update.rb +81 -0
- data/lib/mongo/operation/write/bulk.rb +6 -3
- data/lib/mongo/operation/write/command/create_index.rb +0 -1
- data/lib/mongo/operation/write/command/create_user.rb +0 -1
- data/lib/mongo/operation/write/command/delete.rb +3 -3
- data/lib/mongo/operation/write/command/drop_index.rb +0 -1
- data/lib/mongo/operation/write/command/insert.rb +4 -3
- data/lib/mongo/operation/write/command/remove_user.rb +0 -1
- data/lib/mongo/operation/write/command/update.rb +6 -4
- data/lib/mongo/operation/write/command/update_user.rb +0 -1
- data/lib/mongo/operation/write/command/writable.rb +13 -18
- data/lib/mongo/operation/write/create_index.rb +4 -27
- data/lib/mongo/operation/write/create_user.rb +4 -30
- data/lib/mongo/operation/write/delete.rb +6 -29
- data/lib/mongo/operation/write/drop_index.rb +3 -3
- data/lib/mongo/operation/write/gle.rb +49 -0
- data/lib/mongo/operation/write/idable.rb +24 -2
- data/lib/mongo/operation/write/insert.rb +2 -24
- data/lib/mongo/operation/write/remove_user.rb +4 -27
- data/lib/mongo/operation/write/update.rb +13 -36
- data/lib/mongo/operation/write/update_user.rb +4 -30
- data/lib/mongo/operation/write/write_command_enabled.rb +53 -0
- data/lib/mongo/operation/write.rb +2 -0
- data/lib/mongo/operation.rb +33 -5
- data/lib/mongo/options/mapper.rb +26 -2
- data/lib/mongo/options/redacted.rb +156 -0
- data/lib/mongo/options.rb +1 -0
- data/lib/mongo/protocol/bit_vector.rb +11 -9
- data/lib/mongo/protocol/delete.rb +78 -3
- data/lib/mongo/protocol/get_more.rb +59 -2
- data/lib/mongo/protocol/insert.rb +73 -1
- data/lib/mongo/protocol/kill_cursors.rb +66 -4
- data/lib/mongo/protocol/message.rb +44 -20
- data/lib/mongo/protocol/query.rb +153 -65
- data/lib/mongo/protocol/reply.rb +92 -1
- data/lib/mongo/protocol/serializers.rb +49 -40
- data/lib/mongo/protocol/update.rb +93 -1
- data/lib/mongo/retryable.rb +101 -0
- data/lib/mongo/server/connectable.rb +28 -8
- data/lib/mongo/server/connection.rb +52 -10
- data/lib/mongo/server/connection_pool/queue.rb +15 -0
- data/lib/mongo/server/connection_pool.rb +12 -15
- data/lib/mongo/server/description/features.rb +4 -2
- data/lib/mongo/server/description.rb +39 -3
- data/lib/mongo/server/monitor/connection.rb +49 -28
- data/lib/mongo/server/monitor.rb +3 -14
- data/lib/mongo/server.rb +31 -4
- data/lib/mongo/server_selector/selectable.rb +58 -32
- data/lib/mongo/server_selector.rb +19 -10
- data/lib/mongo/socket/ssl.rb +4 -1
- data/lib/mongo/socket/tcp.rb +2 -2
- data/lib/mongo/socket/unix.rb +5 -8
- data/lib/mongo/socket.rb +11 -4
- data/lib/mongo/uri.rb +245 -139
- data/lib/mongo/version.rb +1 -1
- data/lib/mongo/write_concern.rb +21 -6
- data/lib/mongo.rb +4 -4
- data/mongo.gemspec +1 -2
- data/spec/mongo/address/unix_spec.rb +1 -1
- data/spec/mongo/address_spec.rb +25 -0
- data/spec/mongo/auth/ldap/conversation_spec.rb +43 -0
- data/spec/mongo/auth/user/view_spec.rb +26 -1
- data/spec/mongo/bulk_write/ordered_combiner_spec.rb +284 -0
- data/spec/mongo/bulk_write/unordered_combiner_spec.rb +239 -0
- data/spec/mongo/bulk_write_spec.rb +385 -161
- data/spec/mongo/client_spec.rb +193 -23
- data/spec/mongo/cluster/topology/replica_set_spec.rb +2 -0
- data/spec/mongo/collection/view/aggregation_spec.rb +65 -0
- data/spec/mongo/collection/view/builder/find_command_spec.rb +167 -0
- data/spec/mongo/collection/view/builder/flags_spec.rb +106 -0
- data/spec/mongo/collection/view/builder/modifiers_spec.rb +210 -0
- data/spec/mongo/collection/view/builder/op_query_spec.rb +154 -0
- data/spec/mongo/collection/view/explainable_spec.rb +1 -2
- data/spec/mongo/collection/view/immutable_spec.rb +54 -0
- data/spec/mongo/collection/view/map_reduce_spec.rb +104 -9
- data/spec/mongo/collection/view/readable_spec.rb +109 -112
- data/spec/mongo/collection/view_spec.rb +119 -487
- data/spec/mongo/collection_spec.rb +1002 -33
- data/spec/mongo/command_monitoring_spec.rb +64 -0
- data/spec/mongo/connection_string_spec.rb +115 -0
- data/spec/mongo/cursor/builder/get_more_command_spec.rb +160 -0
- data/spec/mongo/cursor/builder/op_get_more_spec.rb +52 -0
- data/spec/mongo/cursor_spec.rb +10 -60
- data/spec/mongo/database_spec.rb +81 -12
- data/spec/mongo/dbref_spec.rb +4 -4
- data/spec/mongo/grid/file/chunk_spec.rb +6 -6
- data/spec/mongo/grid/file/{metadata_spec.rb → info_spec.rb} +29 -17
- data/spec/mongo/grid/file_spec.rb +8 -8
- data/spec/mongo/grid/fs_bucket_spec.rb +1020 -0
- data/spec/mongo/grid/stream/read_spec.rb +275 -0
- data/spec/mongo/grid/stream/write_spec.rb +440 -0
- data/spec/mongo/grid/stream_spec.rb +48 -0
- data/spec/mongo/gridfs_spec.rb +50 -0
- data/spec/mongo/index/view_spec.rb +41 -0
- data/spec/mongo/logger_spec.rb +0 -40
- data/spec/mongo/monitoring/command_log_subscriber_spec.rb +76 -0
- data/spec/mongo/monitoring/event/command_started_spec.rb +26 -0
- data/spec/mongo/monitoring/event/command_succeeded_spec.rb +26 -0
- data/spec/mongo/monitoring/event/secure_spec.rb +57 -0
- data/spec/mongo/operation/{aggregate → commands/aggregate}/result_spec.rb +1 -1
- data/spec/mongo/operation/commands/aggregate_spec.rb +69 -0
- data/spec/mongo/operation/{read → commands}/collections_info_spec.rb +1 -1
- data/spec/mongo/operation/{command_spec.rb → commands/command_spec.rb} +1 -19
- data/spec/mongo/operation/{read → commands}/indexes_spec.rb +1 -1
- data/spec/mongo/operation/{map_reduce_spec.rb → commands/map_reduce_spec.rb} +1 -19
- data/spec/mongo/operation/kill_cursors_spec.rb +1 -17
- data/spec/mongo/operation/read/get_more_spec.rb +0 -16
- data/spec/mongo/operation/read/query_spec.rb +19 -16
- data/spec/mongo/operation/{read_preferrable_spec.rb → read_preference_spec.rb} +11 -11
- data/spec/mongo/operation/result_spec.rb +19 -0
- data/spec/mongo/operation/write/bulk/{bulk_delete_spec.rb → delete_spec.rb} +17 -28
- data/spec/mongo/operation/write/bulk/{bulk_insert_spec.rb → insert_spec.rb} +1 -12
- data/spec/mongo/operation/write/bulk/{bulk_update_spec.rb → update_spec.rb} +7 -18
- data/spec/mongo/operation/write/command/delete_spec.rb +18 -9
- data/spec/mongo/operation/write/command/insert_spec.rb +18 -9
- data/spec/mongo/operation/write/command/update_spec.rb +18 -9
- data/spec/mongo/operation/write/delete_spec.rb +3 -3
- data/spec/mongo/operation/write/insert_spec.rb +0 -11
- data/spec/mongo/operation/write/update_spec.rb +6 -6
- data/spec/mongo/options/redacted_spec.rb +350 -0
- data/spec/mongo/protocol/delete_spec.rb +4 -4
- data/spec/mongo/protocol/get_more_spec.rb +4 -4
- data/spec/mongo/protocol/insert_spec.rb +3 -3
- data/spec/mongo/protocol/kill_cursors_spec.rb +8 -6
- data/spec/mongo/protocol/query_spec.rb +21 -7
- data/spec/mongo/protocol/update_spec.rb +5 -5
- data/spec/mongo/retryable_spec.rb +221 -0
- data/spec/mongo/server/connection_pool/queue_spec.rb +16 -0
- data/spec/mongo/server/connection_pool_spec.rb +42 -6
- data/spec/mongo/server/connection_spec.rb +86 -1
- data/spec/mongo/server/description/features_spec.rb +25 -0
- data/spec/mongo/server/description_spec.rb +42 -0
- data/spec/mongo/server/monitor_spec.rb +44 -0
- data/spec/mongo/server_discovery_and_monitoring_spec.rb +25 -59
- data/spec/mongo/server_selection_rtt_spec.rb +37 -57
- data/spec/mongo/server_selection_spec.rb +5 -3
- data/spec/mongo/server_selector/nearest_spec.rb +35 -27
- data/spec/mongo/server_selector/primary_preferred_spec.rb +32 -30
- data/spec/mongo/server_selector/primary_spec.rb +21 -14
- data/spec/mongo/server_selector/secondary_preferred_spec.rb +28 -26
- data/spec/mongo/server_selector/secondary_spec.rb +24 -22
- data/spec/mongo/server_selector_spec.rb +87 -24
- data/spec/mongo/server_spec.rb +78 -15
- data/spec/mongo/socket/ssl_spec.rb +101 -57
- data/spec/mongo/socket/unix_spec.rb +52 -0
- data/spec/mongo/uri_spec.rb +271 -59
- data/spec/mongo/write_concern_spec.rb +126 -0
- data/spec/spec_helper.rb +29 -23
- data/spec/support/authorization.rb +4 -5
- data/spec/support/command_monitoring/bulkWrite.yml +73 -0
- data/spec/support/command_monitoring/command.yml +42 -0
- data/spec/support/command_monitoring/deleteMany.yml +55 -0
- data/spec/support/command_monitoring/deleteOne.yml +55 -0
- data/spec/support/command_monitoring/find.yml +268 -0
- data/spec/support/command_monitoring/insertMany.yml +81 -0
- data/spec/support/command_monitoring/insertOne.yml +51 -0
- data/spec/support/command_monitoring/updateMany.yml +67 -0
- data/spec/support/command_monitoring/updateOne.yml +95 -0
- data/spec/support/command_monitoring.rb +373 -0
- data/spec/support/connection_string.rb +228 -0
- data/spec/support/connection_string_tests/invalid-uris.yml +193 -0
- data/spec/support/connection_string_tests/valid-auth.yml +256 -0
- data/spec/support/connection_string_tests/valid-host_identifiers.yml +121 -0
- data/spec/support/connection_string_tests/valid-options.yml +30 -0
- data/spec/support/connection_string_tests/valid-unix_socket-absolute.yml +197 -0
- data/spec/support/connection_string_tests/valid-unix_socket-relative.yml +213 -0
- data/spec/support/connection_string_tests/valid-warnings.yml +55 -0
- data/spec/support/crud/read.rb +14 -10
- data/spec/support/crud/write.rb +36 -9
- data/spec/support/crud.rb +10 -2
- data/spec/support/gridfs.rb +637 -0
- data/spec/support/gridfs_tests/delete.yml +157 -0
- data/spec/support/gridfs_tests/download.yml +210 -0
- data/spec/support/gridfs_tests/download_by_name.yml +113 -0
- data/spec/support/gridfs_tests/upload.yml +158 -0
- data/spec/support/matchers.rb +2 -2
- data/spec/support/sdam/rs/equal_electionids.yml +1 -2
- data/spec/support/sdam/rs/new_primary_new_electionid.yml +0 -3
- data/spec/support/sdam/rs/primary_mismatched_me.yml +37 -0
- data/spec/support/sdam/rs/primary_to_no_primary_mismatched_me.yml +75 -0
- data/spec/support/sdam/rs/rsother_discovered.yml +24 -3
- data/spec/support/sdam/rs/secondary_mismatched_me.yml +37 -0
- data/spec/support/sdam/rs/stepdown_change_set_name.yml +59 -0
- data/spec/support/sdam/single/direct_connection_rsarbiter.yml +1 -1
- data/spec/support/sdam/single/direct_connection_rsprimary.yml +1 -1
- data/spec/support/sdam/single/direct_connection_rssecondary.yml +1 -1
- data/spec/support/sdam/single/direct_connection_slave.yml +1 -1
- data/spec/support/sdam/single/direct_connection_standalone.yml +1 -1
- data/spec/support/sdam/single/not_ok_response.yml +0 -1
- data/spec/support/server_discovery_and_monitoring.rb +3 -1
- data/spec/support/server_selection.rb +3 -1
- data/spec/support/shared/bulk_write.rb +192 -0
- data/spec/support/shared/protocol.rb +5 -5
- data/spec/support/shared/server_selector.rb +78 -13
- data/spec/support/travis.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +211 -72
- metadata.gz.sig +0 -0
- data/lib/mongo/bulk_write/bulk_writable.rb +0 -252
- data/lib/mongo/bulk_write/deletable.rb +0 -57
- data/lib/mongo/bulk_write/insertable.rb +0 -49
- data/lib/mongo/bulk_write/replacable.rb +0 -58
- data/lib/mongo/bulk_write/updatable.rb +0 -69
- data/lib/mongo/grid/fs.rb +0 -146
- data/lib/mongo/operation/aggregate/result.rb +0 -103
- data/lib/mongo/operation/aggregate.rb +0 -108
- data/lib/mongo/operation/command.rb +0 -61
- data/lib/mongo/operation/map_reduce/result.rb +0 -122
- data/lib/mongo/operation/map_reduce.rb +0 -95
- data/lib/mongo/operation/parallel_scan/result.rb +0 -72
- data/lib/mongo/operation/parallel_scan.rb +0 -76
- data/lib/mongo/operation/write/bulk/bulk_delete/result.rb +0 -75
- data/lib/mongo/operation/write/bulk/bulk_delete.rb +0 -145
- data/lib/mongo/operation/write/bulk/bulk_insert/result.rb +0 -130
- data/lib/mongo/operation/write/bulk/bulk_insert.rb +0 -132
- data/lib/mongo/operation/write/bulk/bulk_mergable.rb +0 -67
- data/lib/mongo/operation/write/bulk/bulk_update/result.rb +0 -174
- data/lib/mongo/operation/write/bulk/bulk_update.rb +0 -154
- data/lib/mongo/operation/write/bulk/legacy_bulk_mergable.rb +0 -83
- data/spec/mongo/grid/fs_spec.rb +0 -160
- data/spec/mongo/loggable_spec.rb +0 -63
- data/spec/mongo/operation/aggregate_spec.rb +0 -127
data/lib/mongo/database/view.rb
CHANGED
@@ -50,10 +50,15 @@ module Mongo
|
|
50
50
|
# @since 2.0.0
|
51
51
|
def collection_names(options = {})
|
52
52
|
@batch_size = options[:batch_size]
|
53
|
-
server = next_primary
|
53
|
+
server = next_primary(false)
|
54
|
+
@limit = -1 if server.features.list_collections_enabled?
|
54
55
|
collections_info(server).collect do |info|
|
55
|
-
server.
|
56
|
-
info[
|
56
|
+
if server.features.list_collections_enabled?
|
57
|
+
info[Database::NAME]
|
58
|
+
else
|
59
|
+
(info[Database::NAME] &&
|
60
|
+
info[Database::NAME].sub("#{@database.name}.", ''))
|
61
|
+
end
|
57
62
|
end
|
58
63
|
end
|
59
64
|
|
@@ -66,7 +71,7 @@ module Mongo
|
|
66
71
|
#
|
67
72
|
# @since 2.0.5
|
68
73
|
def list_collections
|
69
|
-
collections_info(next_primary)
|
74
|
+
collections_info(next_primary(false))
|
70
75
|
end
|
71
76
|
|
72
77
|
# Create the new database view.
|
@@ -80,7 +85,7 @@ module Mongo
|
|
80
85
|
def initialize(database)
|
81
86
|
@database = database
|
82
87
|
@batch_size = nil
|
83
|
-
@limit =
|
88
|
+
@limit = nil
|
84
89
|
@collection = @database[Database::COMMAND]
|
85
90
|
end
|
86
91
|
|
@@ -102,7 +107,7 @@ module Mongo
|
|
102
107
|
end
|
103
108
|
|
104
109
|
def initial_query_op
|
105
|
-
Operation::
|
110
|
+
Operation::Commands::CollectionsInfo.new(collections_info_spec)
|
106
111
|
end
|
107
112
|
|
108
113
|
def send_initial_query(server)
|
data/lib/mongo/database.rb
CHANGED
@@ -36,7 +36,17 @@ module Mongo
|
|
36
36
|
# The default database options.
|
37
37
|
#
|
38
38
|
# @since 2.0.0
|
39
|
-
DEFAULT_OPTIONS =
|
39
|
+
DEFAULT_OPTIONS = Options::Redacted.new(:database => ADMIN).freeze
|
40
|
+
|
41
|
+
# Database name field constant.
|
42
|
+
#
|
43
|
+
# @since 2.1.0
|
44
|
+
NAME = 'name'.freeze
|
45
|
+
|
46
|
+
# Databases constant.
|
47
|
+
#
|
48
|
+
# @since 2.1.0
|
49
|
+
DATABASES = 'databases'.freeze
|
40
50
|
|
41
51
|
# The name of the collection that holds all the collection names.
|
42
52
|
#
|
@@ -138,9 +148,9 @@ module Mongo
|
|
138
148
|
#
|
139
149
|
# @return [ Hash ] The result of the command execution.
|
140
150
|
def command(operation, opts = {})
|
141
|
-
preference = opts[:read]
|
142
|
-
server = preference.select_server(cluster)
|
143
|
-
Operation::Command.new({
|
151
|
+
preference = ServerSelector.get(client.options.merge(opts[:read])) if opts[:read]
|
152
|
+
server = preference ? preference.select_server(cluster, false) : cluster.next_primary(false)
|
153
|
+
Operation::Commands::Command.new({
|
144
154
|
:selector => operation,
|
145
155
|
:db_name => name,
|
146
156
|
:options => { :limit => -1 },
|
@@ -196,11 +206,11 @@ module Mongo
|
|
196
206
|
# @example Get the GridFS.
|
197
207
|
# database.fs
|
198
208
|
#
|
199
|
-
# @return [ Grid::
|
209
|
+
# @return [ Grid::FSBucket ] The GridFS for the database.
|
200
210
|
#
|
201
211
|
# @since 2.0.0
|
202
212
|
def fs(options = {})
|
203
|
-
Grid::
|
213
|
+
Grid::FSBucket.new(self, options)
|
204
214
|
end
|
205
215
|
|
206
216
|
# Get the user view for this database.
|
data/lib/mongo/dbref.rb
CHANGED
@@ -53,8 +53,8 @@ module Mongo
|
|
53
53
|
#
|
54
54
|
# @since 2.1.0
|
55
55
|
def as_json(*args)
|
56
|
-
document = {
|
57
|
-
document.merge!(
|
56
|
+
document = { COLLECTION => collection, ID => id }
|
57
|
+
document.merge!(DATABASE => database) if database
|
58
58
|
document
|
59
59
|
end
|
60
60
|
|
@@ -79,30 +79,30 @@ module Mongo
|
|
79
79
|
# @example Convert the DBRef to raw BSON.
|
80
80
|
# dbref.to_bson
|
81
81
|
#
|
82
|
-
# @param [ String ]
|
82
|
+
# @param [ String ] buffer The encoded BSON buffer to append to.
|
83
83
|
#
|
84
84
|
# @return [ String ] The raw BSON.
|
85
85
|
#
|
86
86
|
# @since 2.1.0
|
87
|
-
def to_bson(
|
88
|
-
as_json.to_bson(
|
87
|
+
def to_bson(buffer = BSON::ByteBuffer.new)
|
88
|
+
as_json.to_bson(buffer)
|
89
89
|
end
|
90
90
|
|
91
91
|
module ClassMethods
|
92
92
|
|
93
93
|
# Deserialize the hash from BSON, converting to a DBRef if appropriate.
|
94
94
|
#
|
95
|
-
# @param [
|
95
|
+
# @param [ String ] buffer The bson representing a hash.
|
96
96
|
#
|
97
97
|
# @return [ Hash, DBRef ] The decoded hash or DBRef.
|
98
98
|
#
|
99
99
|
# @see http://bsonspec.org/#/specification
|
100
100
|
#
|
101
101
|
# @since 2.0.0
|
102
|
-
def from_bson(
|
102
|
+
def from_bson(buffer)
|
103
103
|
decoded = super
|
104
|
-
if ref = decoded[
|
105
|
-
decoded = DBRef.new(ref, decoded[
|
104
|
+
if ref = decoded[COLLECTION]
|
105
|
+
decoded = DBRef.new(ref, decoded[ID], decoded[DATABASE])
|
106
106
|
end
|
107
107
|
decoded
|
108
108
|
end
|
@@ -13,30 +13,21 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
module Mongo
|
16
|
-
|
16
|
+
class Error
|
17
17
|
|
18
|
-
#
|
18
|
+
# Raised if the GridFS::Stream object is closed and an operation is attempted.
|
19
19
|
#
|
20
|
-
# @since 2.
|
21
|
-
class
|
22
|
-
include BulkWritable
|
20
|
+
# @since 2.1.0
|
21
|
+
class ClosedStream < Error
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
def
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
def process(result, indexes)
|
35
|
-
combine_results(result, indexes)
|
36
|
-
end
|
37
|
-
|
38
|
-
def finalize
|
39
|
-
Result.new(@results).validate!
|
23
|
+
# Create the new exception.
|
24
|
+
#
|
25
|
+
# @example Create the new exception.
|
26
|
+
# Mongo::Error::ClosedStream.new
|
27
|
+
#
|
28
|
+
# @since 2.1.0
|
29
|
+
def initialize
|
30
|
+
super("The stream is closed and cannot be written to or read from.")
|
40
31
|
end
|
41
32
|
end
|
42
33
|
end
|
@@ -13,35 +13,21 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
module Mongo
|
16
|
-
|
16
|
+
class Error
|
17
17
|
|
18
|
-
#
|
18
|
+
# Raised if an extra chunk is found.
|
19
19
|
#
|
20
|
-
# @since 2.
|
21
|
-
class
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
merge_consecutive_ops(@operations)
|
32
|
-
end
|
33
|
-
|
34
|
-
def process(result, indexes)
|
35
|
-
combine_results(result, indexes)
|
36
|
-
raise Error::BulkWriteError.new(@results) if stop?
|
37
|
-
end
|
38
|
-
|
39
|
-
def stop?
|
40
|
-
@results.keys.include?(Error::WRITE_ERRORS)
|
41
|
-
end
|
42
|
-
|
43
|
-
def finalize
|
44
|
-
Result.new(@results).validate!
|
20
|
+
# @since 2.1.0
|
21
|
+
class ExtraFileChunk < Error
|
22
|
+
|
23
|
+
# Create the new exception.
|
24
|
+
#
|
25
|
+
# @example Create the new exception.
|
26
|
+
# Mongo::Error::ExtraFileChunk.new
|
27
|
+
#
|
28
|
+
# @since 2.1.0
|
29
|
+
def initialize
|
30
|
+
super("Extra file chunk found.")
|
45
31
|
end
|
46
32
|
end
|
47
33
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Raised if a file is deleted from a GridFS but it is not found.
|
19
|
+
#
|
20
|
+
# @since 2.1.0
|
21
|
+
class FileNotFound < Error
|
22
|
+
|
23
|
+
# Create the new exception.
|
24
|
+
#
|
25
|
+
# @example Create the new exception.
|
26
|
+
# Mongo::Error::FileNotFound.new(id, :id)
|
27
|
+
#
|
28
|
+
# @param [ Object ] value The property value used to find the file.
|
29
|
+
# @param [ String, Symbol ] property The name of the property used to find the file.
|
30
|
+
#
|
31
|
+
# @since 2.1.0
|
32
|
+
def initialize(value, property)
|
33
|
+
super("File with #{property} '#{value}' not found.")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -21,9 +21,9 @@ module Mongo
|
|
21
21
|
# @since 2.0.0
|
22
22
|
class InvalidFile < Error
|
23
23
|
|
24
|
-
# Create the
|
24
|
+
# Create the new exception.
|
25
25
|
#
|
26
|
-
# @example Create the
|
26
|
+
# @example Create the new exception.
|
27
27
|
# Mongo::Error::InvalidFile.new(file_md5, server_md5)
|
28
28
|
#
|
29
29
|
# @param [ String ] client_md5 The client side file md5.
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Raised if the requested file revision is not found.
|
19
|
+
#
|
20
|
+
# @since 2.1.0
|
21
|
+
class InvalidFileRevision < Error
|
22
|
+
|
23
|
+
# Create the new exception.
|
24
|
+
#
|
25
|
+
# @example Create the new exception.
|
26
|
+
# Mongo::Error::InvalidFileRevision.new('some-file.txt', 3)
|
27
|
+
#
|
28
|
+
# @param [ String ] filename The name of the file.
|
29
|
+
# @param [ Integer ] revision The requested revision.
|
30
|
+
#
|
31
|
+
# @since 2.1.0
|
32
|
+
def initialize(filename, revision)
|
33
|
+
super("No revision #{revision} found for file '#{filename}'.")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -27,10 +27,11 @@ module Mongo
|
|
27
27
|
# Mongo::Error::InvalidURI.new(uri)
|
28
28
|
#
|
29
29
|
# @since 2.0.0
|
30
|
-
def initialize(uri)
|
31
|
-
super("
|
32
|
-
"
|
33
|
-
"
|
30
|
+
def initialize(uri, details)
|
31
|
+
super("Bad URI: #{uri}\n" +
|
32
|
+
"#{details}\n" +
|
33
|
+
"MongoDB URI must be in the following format: #{Mongo::URI::FORMAT}\n" +
|
34
|
+
"Please see the following URL for more information: #{Mongo::URI::HELP}\n")
|
34
35
|
end
|
35
36
|
end
|
36
37
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Raised when an invalid write concern is provided.
|
19
|
+
#
|
20
|
+
# @since 2.2.0
|
21
|
+
class InvalidWriteConcern < Error
|
22
|
+
|
23
|
+
# Instantiate the new exception.
|
24
|
+
#
|
25
|
+
# @example Instantiate the exception.
|
26
|
+
# Mongo::Error::InvalidWriteConcern.new
|
27
|
+
#
|
28
|
+
# @since 2.2.0
|
29
|
+
def initialize
|
30
|
+
super('Invalid write concern options. If w is an Integer, it must be greater than or equal to 0. ' +
|
31
|
+
'If w is 0, it cannot be combined with a true value for fsync or j (journal).')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Raised if the next chunk when reading from a GridFSBucket does not have the
|
19
|
+
# expected sequence number (n).
|
20
|
+
#
|
21
|
+
# @since 2.1.0
|
22
|
+
class MissingFileChunk < Error
|
23
|
+
|
24
|
+
# Create the new exception.
|
25
|
+
#
|
26
|
+
# @example Create the new exception.
|
27
|
+
# Mongo::Error::MissingFileChunk.new(expected_n, chunk)
|
28
|
+
#
|
29
|
+
# @param [ Integer ] expected_n The expected index value.
|
30
|
+
# @param [ Grid::File::Chunk ] chunk The chunk read from GridFS.
|
31
|
+
#
|
32
|
+
# @since 2.1.0
|
33
|
+
def initialize(expected_n, chunk)
|
34
|
+
super("Unexpected chunk in sequence. Expected next chunk to have index #{expected_n} but it has index #{chunk.n}")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -15,9 +15,40 @@
|
|
15
15
|
module Mongo
|
16
16
|
class Error
|
17
17
|
|
18
|
-
# Raised when
|
18
|
+
# Raised when an operation fails for some reason.
|
19
19
|
#
|
20
20
|
# @since 2.0.0
|
21
|
-
class OperationFailure < Error
|
21
|
+
class OperationFailure < Error
|
22
|
+
|
23
|
+
# These are magic error messages that could indicate a cluster
|
24
|
+
# reconfiguration behind a mongos. We cannot check error codes as they
|
25
|
+
# change between versions, for example 15988 which has 2 completely
|
26
|
+
# different meanings between 2.4 and 3.0.
|
27
|
+
#
|
28
|
+
# @since 2.1.1
|
29
|
+
RETRY_MESSAGES = [
|
30
|
+
'transport error',
|
31
|
+
'socket exception',
|
32
|
+
"can't connect",
|
33
|
+
'no master',
|
34
|
+
'not master',
|
35
|
+
'connect failed',
|
36
|
+
'error querying',
|
37
|
+
'could not get last error',
|
38
|
+
'connection attempt failed'
|
39
|
+
].freeze
|
40
|
+
|
41
|
+
# Can the operation that caused the error be retried?
|
42
|
+
#
|
43
|
+
# @example Is the error retryable?
|
44
|
+
# error.retryable?
|
45
|
+
#
|
46
|
+
# @return [ true, false ] If the error is retryable.
|
47
|
+
#
|
48
|
+
# @since 2.1.1
|
49
|
+
def retryable?
|
50
|
+
RETRY_MESSAGES.any?{ |m| message.include?(m) }
|
51
|
+
end
|
52
|
+
end
|
22
53
|
end
|
23
54
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Raised if a new collection is created from an existing one and options other than the
|
19
|
+
# changeable ones are provided.
|
20
|
+
#
|
21
|
+
# @since 2.1.0
|
22
|
+
class UnchangeableCollectionOption < Error
|
23
|
+
|
24
|
+
# Create the new exception.
|
25
|
+
#
|
26
|
+
# @example Create the new exception.
|
27
|
+
# Mongo::Error::UnchangeableCollectionOption.new(option)
|
28
|
+
#
|
29
|
+
# @param [ String, Symbol ] option The option that was attempted to be changed.
|
30
|
+
#
|
31
|
+
# @since 2.1.0
|
32
|
+
def initialize(option)
|
33
|
+
super("The option #{option} cannot be set on a new collection instance." +
|
34
|
+
" The options that can be updated are #{Collection::CHANGEABLE_OPTIONS}")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# Copyright (C) 2014-2015 MongoDB, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Mongo
|
16
|
+
class Error
|
17
|
+
|
18
|
+
# Raised if the next chunk when reading from a GridFSBucket does not have the
|
19
|
+
# expected length.
|
20
|
+
#
|
21
|
+
# @since 2.1.0
|
22
|
+
class UnexpectedChunkLength < Error
|
23
|
+
|
24
|
+
# Create the new exception.
|
25
|
+
#
|
26
|
+
# @example Create the new exception.
|
27
|
+
# Mongo::Error::UnexpectedChunkLength.new(expected_len, chunk)
|
28
|
+
#
|
29
|
+
# @param [ Integer ] expected_len The expected length.
|
30
|
+
# @param [ Grid::File::Chunk ] chunk The chunk read from GridFS.
|
31
|
+
#
|
32
|
+
# @since 2.1.0
|
33
|
+
def initialize(expected_len, chunk)
|
34
|
+
super("Unexpected chunk length. Chunk has length #{chunk.data.data.size} but expected length " +
|
35
|
+
"#{expected_len} or for it to be the last chunk in the sequence.")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/mongo/error.rb
CHANGED
@@ -67,6 +67,9 @@ end
|
|
67
67
|
|
68
68
|
require 'mongo/error/parser'
|
69
69
|
require 'mongo/error/bulk_write_error'
|
70
|
+
require 'mongo/error/closed_stream'
|
71
|
+
require 'mongo/error/extra_file_chunk'
|
72
|
+
require 'mongo/error/file_not_found'
|
70
73
|
require 'mongo/error/operation_failure'
|
71
74
|
require 'mongo/error/invalid_bulk_operation'
|
72
75
|
require 'mongo/error/invalid_bulk_operation_type'
|
@@ -74,12 +77,14 @@ require 'mongo/error/invalid_collection_name'
|
|
74
77
|
require 'mongo/error/invalid_database_name'
|
75
78
|
require 'mongo/error/invalid_document'
|
76
79
|
require 'mongo/error/invalid_file'
|
80
|
+
require 'mongo/error/invalid_file_revision'
|
77
81
|
require 'mongo/error/invalid_nonce'
|
78
82
|
require 'mongo/error/invalid_replacement_document'
|
79
83
|
require 'mongo/error/invalid_server_preference'
|
80
84
|
require 'mongo/error/invalid_signature'
|
81
85
|
require 'mongo/error/invalid_update_document'
|
82
86
|
require 'mongo/error/invalid_uri'
|
87
|
+
require 'mongo/error/invalid_write_concern'
|
83
88
|
require 'mongo/error/max_bson_size'
|
84
89
|
require 'mongo/error/max_message_size'
|
85
90
|
require 'mongo/error/multi_index_drop'
|
@@ -87,4 +92,7 @@ require 'mongo/error/need_primary_server'
|
|
87
92
|
require 'mongo/error/no_server_available'
|
88
93
|
require 'mongo/error/socket_error'
|
89
94
|
require 'mongo/error/socket_timeout_error'
|
95
|
+
require 'mongo/error/unchangeable_collection_option'
|
96
|
+
require 'mongo/error/unexpected_chunk_length'
|
97
|
+
require 'mongo/error/missing_file_chunk'
|
90
98
|
require 'mongo/error/unsupported_features'
|
@@ -128,13 +128,13 @@ module Mongo
|
|
128
128
|
# @example Convert the chunk to BSON.
|
129
129
|
# chunk.to_bson
|
130
130
|
#
|
131
|
-
# @param [ String ]
|
131
|
+
# @param [ String ] buffer The encoded data buffer to append to.
|
132
132
|
#
|
133
133
|
# @return [ String ] The raw BSON data.
|
134
134
|
#
|
135
135
|
# @since 2.0.0
|
136
|
-
def to_bson(
|
137
|
-
document.to_bson(
|
136
|
+
def to_bson(buffer = BSON::ByteBuffer.new)
|
137
|
+
document.to_bson(buffer)
|
138
138
|
end
|
139
139
|
|
140
140
|
class << self
|
@@ -160,17 +160,17 @@ module Mongo
|
|
160
160
|
# Chunks.split(data)
|
161
161
|
#
|
162
162
|
# @param [ String ] data The raw bytes.
|
163
|
-
# @param [
|
163
|
+
# @param [ File::Info ] file_info The files collection file doc.
|
164
164
|
#
|
165
165
|
# @return [ Array<Chunk> ] The chunks of the data.
|
166
166
|
#
|
167
167
|
# @since 2.0.0
|
168
|
-
def split(data,
|
169
|
-
chunks, index, n = [], 0,
|
168
|
+
def split(data, file_info, offset = 0)
|
169
|
+
chunks, index, n = [], 0, offset
|
170
170
|
while index < data.length
|
171
|
-
bytes = data.slice(index,
|
172
|
-
|
173
|
-
chunk = Chunk.new(:data => BSON::Binary.new(bytes), :files_id =>
|
171
|
+
bytes = data.slice(index, file_info.chunk_size)
|
172
|
+
file_info.md5.update(bytes)
|
173
|
+
chunk = Chunk.new(:data => BSON::Binary.new(bytes), :files_id => file_info.id, :n => n)
|
174
174
|
chunks.push(chunk)
|
175
175
|
index += bytes.length
|
176
176
|
n += 1
|