mongo 2.1.2 → 2.2.0.rc0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +10 -3
- data/Rakefile +1 -7
- data/lib/csasl/csasl.bundle +0 -0
- data/lib/mongo/auth/user/view.rb +1 -1
- data/lib/mongo/bulk_write.rb +7 -1
- data/lib/mongo/client.rb +17 -15
- data/lib/mongo/cluster.rb +4 -2
- data/lib/mongo/collection.rb +36 -2
- data/lib/mongo/collection/view.rb +24 -21
- data/lib/mongo/collection/view/aggregation.rb +5 -42
- data/lib/mongo/collection/view/builder.rb +20 -0
- 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/explainable.rb +15 -0
- data/lib/mongo/collection/view/immutable.rb +5 -12
- data/lib/mongo/collection/view/iterable.rb +24 -2
- data/lib/mongo/collection/view/map_reduce.rb +18 -27
- data/lib/mongo/collection/view/readable.rb +70 -112
- data/lib/mongo/collection/view/writable.rb +23 -7
- data/lib/mongo/cursor.rb +76 -25
- data/lib/mongo/cursor/builder.rb +18 -0
- 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/database.rb +2 -2
- data/lib/mongo/database/view.rb +9 -5
- data/lib/mongo/dbref.rb +3 -3
- data/lib/mongo/error.rb +1 -0
- data/lib/mongo/error/invalid_write_concern.rb +35 -0
- data/lib/mongo/grid/file/chunk.rb +2 -2
- data/lib/mongo/index/view.rb +5 -2
- data/lib/mongo/operation.rb +1 -0
- data/lib/mongo/operation/commands.rb +2 -0
- data/lib/mongo/operation/commands/aggregate.rb +39 -45
- data/lib/mongo/operation/commands/aggregate/result.rb +54 -68
- data/lib/mongo/operation/commands/collections_info.rb +38 -36
- data/lib/mongo/operation/commands/collections_info/result.rb +17 -15
- data/lib/mongo/operation/commands/command.rb +24 -22
- data/lib/mongo/operation/commands/find.rb +27 -0
- data/lib/mongo/operation/commands/find/result.rb +62 -0
- data/lib/mongo/operation/commands/get_more.rb +27 -0
- data/lib/mongo/operation/commands/get_more/result.rb +62 -0
- data/lib/mongo/operation/commands/indexes.rb +41 -39
- data/lib/mongo/operation/commands/list_collections.rb +25 -31
- data/lib/mongo/operation/commands/list_collections/result.rb +63 -81
- data/lib/mongo/operation/commands/list_indexes.rb +27 -35
- data/lib/mongo/operation/commands/list_indexes/result.rb +67 -85
- data/lib/mongo/operation/commands/map_reduce.rb +29 -37
- data/lib/mongo/operation/commands/map_reduce/result.rb +85 -88
- data/lib/mongo/operation/commands/parallel_scan.rb +29 -33
- data/lib/mongo/operation/commands/parallel_scan/result.rb +34 -42
- data/lib/mongo/operation/commands/user_query.rb +40 -38
- data/lib/mongo/operation/commands/users_info.rb +24 -29
- data/lib/mongo/operation/commands/users_info/result.rb +13 -11
- data/lib/mongo/operation/object_id_generator.rb +36 -0
- data/lib/mongo/operation/result.rb +30 -0
- data/lib/mongo/operation/specifiable.rb +35 -1
- data/lib/mongo/operation/write/bulk/bulkable.rb +4 -3
- data/lib/mongo/operation/write/bulk/delete/result.rb +18 -25
- data/lib/mongo/operation/write/bulk/legacy_mergable.rb +2 -2
- data/lib/mongo/operation/write/command/delete.rb +3 -2
- data/lib/mongo/operation/write/command/insert.rb +4 -2
- data/lib/mongo/operation/write/command/update.rb +6 -3
- data/lib/mongo/operation/write/gle.rb +2 -1
- data/lib/mongo/operation/write/idable.rb +19 -2
- data/lib/mongo/options/mapper.rb +22 -0
- data/lib/mongo/protocol/bit_vector.rb +3 -3
- data/lib/mongo/protocol/delete.rb +15 -5
- data/lib/mongo/protocol/get_more.rb +10 -5
- data/lib/mongo/protocol/insert.rb +1 -6
- data/lib/mongo/protocol/kill_cursors.rb +14 -1
- data/lib/mongo/protocol/message.rb +32 -8
- data/lib/mongo/protocol/serializers.rb +15 -16
- data/lib/mongo/protocol/update.rb +35 -12
- data/lib/mongo/server/connectable.rb +3 -1
- data/lib/mongo/server/connection.rb +5 -5
- data/lib/mongo/server/description.rb +8 -2
- data/lib/mongo/server/description/features.rb +2 -1
- data/lib/mongo/server/monitor.rb +1 -12
- data/lib/mongo/server/monitor/connection.rb +30 -26
- data/lib/mongo/server_selector/selectable.rb +21 -4
- data/lib/mongo/uri.rb +2 -0
- data/lib/mongo/version.rb +1 -1
- data/lib/mongo/write_concern.rb +21 -6
- data/mongo.gemspec +1 -2
- data/spec/mongo/bulk_write/ordered_combiner_spec.rb +13 -0
- data/spec/mongo/bulk_write_spec.rb +58 -0
- data/spec/mongo/client_spec.rb +6 -4
- 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 +3 -52
- data/spec/mongo/collection/view/map_reduce_spec.rb +12 -12
- data/spec/mongo/collection/view/readable_spec.rb +86 -80
- data/spec/mongo/collection/view_spec.rb +109 -703
- data/spec/mongo/collection_spec.rb +594 -11
- data/spec/mongo/command_monitoring_spec.rb +40 -27
- 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 +24 -3
- data/spec/mongo/dbref_spec.rb +4 -4
- data/spec/mongo/grid/file/chunk_spec.rb +1 -1
- data/spec/mongo/grid/fs_bucket_spec.rb +3 -3
- data/spec/mongo/index/view_spec.rb +41 -0
- data/spec/mongo/operation/{aggregate → commands/aggregate}/result_spec.rb +1 -1
- data/spec/mongo/operation/commands/aggregate_spec.rb +1 -1
- data/spec/mongo/operation/commands/collections_info_spec.rb +1 -1
- data/spec/mongo/operation/commands/command_spec.rb +1 -1
- data/spec/mongo/operation/commands/indexes_spec.rb +1 -1
- data/spec/mongo/operation/commands/map_reduce_spec.rb +1 -1
- data/spec/mongo/operation/write/command/delete_spec.rb +25 -0
- data/spec/mongo/operation/write/command/insert_spec.rb +25 -0
- data/spec/mongo/operation/write/command/update_spec.rb +25 -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 +3 -3
- data/spec/mongo/protocol/query_spec.rb +7 -7
- data/spec/mongo/protocol/update_spec.rb +5 -5
- data/spec/mongo/server/description/features_spec.rb +25 -0
- data/spec/mongo/write_concern_spec.rb +126 -0
- data/spec/spec_helper.rb +9 -19
- data/spec/support/command_monitoring.rb +8 -0
- data/spec/support/command_monitoring/find.yml +53 -4
- data/spec/support/matchers.rb +1 -1
- data/spec/support/shared/protocol.rb +5 -5
- data/spec/support/travis.rb +1 -1
- metadata +43 -10
- metadata.gz.sig +0 -0
@@ -14,97 +14,79 @@
|
|
14
14
|
|
15
15
|
module Mongo
|
16
16
|
module Operation
|
17
|
-
|
17
|
+
module Commands
|
18
|
+
class ListCollections
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
#
|
22
|
-
# @since 2.0.0
|
23
|
-
class Result < Operation::Result
|
24
|
-
|
25
|
-
# The field name for the cursor document in a listCollections result.
|
26
|
-
#
|
27
|
-
# @since 2.0.0
|
28
|
-
CURSOR = 'cursor'.freeze
|
29
|
-
|
30
|
-
# The cursor id field in the cursor document.
|
31
|
-
#
|
32
|
-
# @since 2.0.0
|
33
|
-
CURSOR_ID = 'id'.freeze
|
34
|
-
|
35
|
-
# The namespace field in the cursor document.
|
36
|
-
#
|
37
|
-
# @since 2.0.0
|
38
|
-
NAMESPACE = 'ns'.freeze
|
39
|
-
|
40
|
-
# The field name for the first batch of a cursor.
|
20
|
+
# Defines custom behaviour of results when using the
|
21
|
+
# listCollections command.
|
41
22
|
#
|
42
23
|
# @since 2.0.0
|
43
|
-
|
24
|
+
class Result < Operation::Result
|
44
25
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
26
|
+
# Get the cursor id for the result.
|
27
|
+
#
|
28
|
+
# @example Get the cursor id.
|
29
|
+
# result.cursor_id
|
30
|
+
#
|
31
|
+
# @note Even though the wire protocol has a cursor_id field for all
|
32
|
+
# messages of type reply, it is always zero when using the
|
33
|
+
# listCollections command and must be retrieved from the cursor
|
34
|
+
# document itself.
|
35
|
+
#
|
36
|
+
# @return [ Integer ] The cursor id.
|
37
|
+
#
|
38
|
+
# @since 2.0.0
|
39
|
+
def cursor_id
|
40
|
+
cursor_document ? cursor_document[CURSOR_ID] : super
|
41
|
+
end
|
61
42
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
43
|
+
# Get the namespace for the cursor.
|
44
|
+
#
|
45
|
+
# @example Get the namespace.
|
46
|
+
# result.namespace
|
47
|
+
#
|
48
|
+
# @return [ String ] The namespace.
|
49
|
+
#
|
50
|
+
# @since 2.0.0
|
51
|
+
def namespace
|
52
|
+
cursor_document ? cursor_document[NAMESPACE] : super
|
53
|
+
end
|
73
54
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
55
|
+
# Get the documents for the listCollections result. It is the 'firstBatch'
|
56
|
+
# field in the 'cursor' field of the first document returned.
|
57
|
+
#
|
58
|
+
# @example Get the documents.
|
59
|
+
# result.documents
|
60
|
+
#
|
61
|
+
# @return [ Array<BSON::Document> ] The documents.
|
62
|
+
#
|
63
|
+
# @since 2.0.0
|
64
|
+
def documents
|
65
|
+
cursor_document[FIRST_BATCH]
|
66
|
+
end
|
86
67
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
68
|
+
# Validate the result. In the case where an unauthorized client tries
|
69
|
+
# to run the command we need to generate the proper error.
|
70
|
+
#
|
71
|
+
# @example Validate the result.
|
72
|
+
# result.validate!
|
73
|
+
#
|
74
|
+
# @return [ Result ] Self if successful.
|
75
|
+
#
|
76
|
+
# @since 2.0.0
|
77
|
+
def validate!
|
78
|
+
!successful? ? raise(Error::OperationFailure.new(parser.message)) : self
|
79
|
+
end
|
99
80
|
|
100
|
-
|
81
|
+
private
|
101
82
|
|
102
|
-
|
103
|
-
|
104
|
-
|
83
|
+
def cursor_document
|
84
|
+
@cursor_document ||= first_document[CURSOR]
|
85
|
+
end
|
105
86
|
|
106
|
-
|
107
|
-
|
87
|
+
def first_document
|
88
|
+
@first_document ||= reply.documents[0]
|
89
|
+
end
|
108
90
|
end
|
109
91
|
end
|
110
92
|
end
|
@@ -12,45 +12,37 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
require 'mongo/operation/commands/list_indexes/result'
|
16
|
-
|
17
15
|
module Mongo
|
18
16
|
module Operation
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
def query_coll
|
46
|
-
Database::COMMAND
|
47
|
-
end
|
48
|
-
|
49
|
-
def selector
|
50
|
-
(spec[SELECTOR] || {}).merge(listIndexes: coll_name)
|
17
|
+
module Commands
|
18
|
+
|
19
|
+
# A MongoDB listIndexes command operation.
|
20
|
+
#
|
21
|
+
# @example Create the listIndexes command operation.
|
22
|
+
# Mongo::Operation::Read::ListIndexes.new({ db_name: 'test', coll_name: 'example' })
|
23
|
+
#
|
24
|
+
# @note A command is actually a query on the virtual '$cmd' collection.
|
25
|
+
#
|
26
|
+
# Initialization:
|
27
|
+
# param [ Hash ] spec The specifications for the command.
|
28
|
+
#
|
29
|
+
# option spec :coll_name [ Hash ] The name of the collection whose index
|
30
|
+
# info is requested.
|
31
|
+
# option spec :db_name [ String ] The name of the database on which
|
32
|
+
# the command should be executed.
|
33
|
+
# option spec :options [ Hash ] Options for the command.
|
34
|
+
#
|
35
|
+
# @since 2.0.0
|
36
|
+
class ListIndexes < Command
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def selector
|
41
|
+
(spec[SELECTOR] || {}).merge(listIndexes: coll_name)
|
42
|
+
end
|
51
43
|
end
|
52
44
|
end
|
53
45
|
end
|
54
46
|
end
|
55
47
|
|
56
|
-
|
48
|
+
require 'mongo/operation/commands/list_indexes/result'
|
@@ -14,101 +14,83 @@
|
|
14
14
|
|
15
15
|
module Mongo
|
16
16
|
module Operation
|
17
|
-
|
17
|
+
module Commands
|
18
|
+
class ListIndexes
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
#
|
22
|
-
# @since 2.0.0
|
23
|
-
class Result < Operation::Result
|
24
|
-
|
25
|
-
# The field name for the cursor document in a listIndexes result.
|
20
|
+
# Defines custom behaviour of results when using the
|
21
|
+
# listIndexes command.
|
26
22
|
#
|
27
23
|
# @since 2.0.0
|
28
|
-
|
24
|
+
class Result < Operation::Result
|
29
25
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
26
|
+
# Get the cursor id for the result.
|
27
|
+
#
|
28
|
+
# @example Get the cursor id.
|
29
|
+
# result.cursor_id
|
30
|
+
#
|
31
|
+
# @note Even though the wire protocol has a cursor_id field for all
|
32
|
+
# messages of type reply, it is always zero when using the
|
33
|
+
# listIndexes command and must be retrieved from the cursor
|
34
|
+
# document itself.
|
35
|
+
#
|
36
|
+
# @return [ Integer ] The cursor id.
|
37
|
+
#
|
38
|
+
# @since 2.0.0
|
39
|
+
def cursor_id
|
40
|
+
cursor_document ? cursor_document[CURSOR_ID] : super
|
41
|
+
end
|
34
42
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
43
|
+
# Get the namespace for the cursor.
|
44
|
+
#
|
45
|
+
# @example Get the namespace.
|
46
|
+
# result.namespace
|
47
|
+
#
|
48
|
+
# @return [ String ] The namespace.
|
49
|
+
#
|
50
|
+
# @since 2.0.0
|
51
|
+
def namespace
|
52
|
+
cursor_document ? cursor_document[NAMESPACE] : super
|
53
|
+
end
|
39
54
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
55
|
+
# Get the documents for the listIndexes result. This is the 'firstBatch'
|
56
|
+
# field in the 'cursor' field of the first document returned.
|
57
|
+
#
|
58
|
+
# @example Get the documents.
|
59
|
+
# result.documents
|
60
|
+
#
|
61
|
+
# @return [ Array<BSON::Document> ] The documents.
|
62
|
+
#
|
63
|
+
# @since 2.0.0
|
64
|
+
def documents
|
65
|
+
cursor_document[FIRST_BATCH]
|
66
|
+
end
|
44
67
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
68
|
+
# Validate the result. In the case where the database or collection
|
69
|
+
# does not exist on the server we will get an error, and it's better
|
70
|
+
# to raise a meaningful exception here than the ambiguous one when
|
71
|
+
# the error occurs.
|
72
|
+
#
|
73
|
+
# @example Validate the result.
|
74
|
+
# result.validate!
|
75
|
+
#
|
76
|
+
# @raise [ NoNamespace ] If the ns doesn't exist.
|
77
|
+
#
|
78
|
+
# @return [ Result ] Self if successful.
|
79
|
+
#
|
80
|
+
# @since 2.0.0
|
81
|
+
def validate!
|
82
|
+
!successful? ? raise(Error::OperationFailure.new(parser.message)) : self
|
83
|
+
end
|
61
84
|
|
62
|
-
|
63
|
-
#
|
64
|
-
# @example Get the namespace.
|
65
|
-
# result.namespace
|
66
|
-
#
|
67
|
-
# @return [ String ] The namespace.
|
68
|
-
#
|
69
|
-
# @since 2.0.0
|
70
|
-
def namespace
|
71
|
-
cursor_document ? cursor_document[NAMESPACE] : super
|
72
|
-
end
|
73
|
-
|
74
|
-
# Get the documents for the listIndexes result. This is the 'firstBatch'
|
75
|
-
# field in the 'cursor' field of the first document returned.
|
76
|
-
#
|
77
|
-
# @example Get the documents.
|
78
|
-
# result.documents
|
79
|
-
#
|
80
|
-
# @return [ Array<BSON::Document> ] The documents.
|
81
|
-
#
|
82
|
-
# @since 2.0.0
|
83
|
-
def documents
|
84
|
-
cursor_document[FIRST_BATCH]
|
85
|
-
end
|
86
|
-
|
87
|
-
# Validate the result. In the case where the database or collection
|
88
|
-
# does not exist on the server we will get an error, and it's better
|
89
|
-
# to raise a meaningful exception here than the ambiguous one when
|
90
|
-
# the error occurs.
|
91
|
-
#
|
92
|
-
# @example Validate the result.
|
93
|
-
# result.validate!
|
94
|
-
#
|
95
|
-
# @raise [ NoNamespace ] If the ns doesn't exist.
|
96
|
-
#
|
97
|
-
# @return [ Result ] Self if successful.
|
98
|
-
#
|
99
|
-
# @since 2.0.0
|
100
|
-
def validate!
|
101
|
-
!successful? ? raise(Error::OperationFailure.new(parser.message)) : self
|
102
|
-
end
|
85
|
+
private
|
103
86
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
@cursor_document ||= first_document[CURSOR]
|
108
|
-
end
|
87
|
+
def cursor_document
|
88
|
+
@cursor_document ||= first_document[CURSOR]
|
89
|
+
end
|
109
90
|
|
110
|
-
|
111
|
-
|
91
|
+
def first_document
|
92
|
+
@first_document ||= reply.documents[0]
|
93
|
+
end
|
112
94
|
end
|
113
95
|
end
|
114
96
|
end
|
@@ -12,46 +12,38 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
require 'mongo/operation/commands/map_reduce/result'
|
16
|
-
|
17
15
|
module Mongo
|
18
16
|
module Operation
|
19
|
-
|
20
|
-
#
|
21
|
-
# @note A map/reduce operation can behave like a read and
|
22
|
-
# return a result set, or can behave like a write operation and
|
23
|
-
# output results to a user-specified collection.
|
24
|
-
#
|
25
|
-
# @example Create the map/reduce operation.
|
26
|
-
# MapReduce.new({
|
27
|
-
# :selector => {
|
28
|
-
# :mapreduce => 'test_coll',
|
29
|
-
# :map => '',
|
30
|
-
# :reduce => ''
|
31
|
-
# },
|
32
|
-
# :db_name => 'test_db'
|
33
|
-
# })
|
34
|
-
#
|
35
|
-
# Initialization:
|
36
|
-
# param [ Hash ] spec The specifications for the operation.
|
37
|
-
#
|
38
|
-
# option spec :selector [ Hash ] The map reduce selector.
|
39
|
-
# option spec :db_name [ String ] The name of the database on which
|
40
|
-
# the operation should be executed.
|
41
|
-
# option spec :options [ Hash ] Options for the map reduce command.
|
42
|
-
#
|
43
|
-
# @since 2.0.0
|
44
|
-
class MapReduce
|
45
|
-
include Specifiable
|
46
|
-
include Limited
|
47
|
-
include ReadPreference
|
48
|
-
include Executable
|
49
|
-
|
50
|
-
private
|
17
|
+
module Commands
|
51
18
|
|
52
|
-
|
53
|
-
|
54
|
-
|
19
|
+
# A MongoDB map reduce operation.
|
20
|
+
#
|
21
|
+
# @note A map/reduce operation can behave like a read and
|
22
|
+
# return a result set, or can behave like a write operation and
|
23
|
+
# output results to a user-specified collection.
|
24
|
+
#
|
25
|
+
# @example Create the map/reduce operation.
|
26
|
+
# MapReduce.new({
|
27
|
+
# :selector => {
|
28
|
+
# :mapreduce => 'test_coll',
|
29
|
+
# :map => '',
|
30
|
+
# :reduce => ''
|
31
|
+
# },
|
32
|
+
# :db_name => 'test_db'
|
33
|
+
# })
|
34
|
+
#
|
35
|
+
# Initialization:
|
36
|
+
# param [ Hash ] spec The specifications for the operation.
|
37
|
+
#
|
38
|
+
# option spec :selector [ Hash ] The map reduce selector.
|
39
|
+
# option spec :db_name [ String ] The name of the database on which
|
40
|
+
# the operation should be executed.
|
41
|
+
# option spec :options [ Hash ] Options for the map reduce command.
|
42
|
+
#
|
43
|
+
# @since 2.0.0
|
44
|
+
class MapReduce < Command; end
|
55
45
|
end
|
56
46
|
end
|
57
47
|
end
|
48
|
+
|
49
|
+
require 'mongo/operation/commands/map_reduce/result'
|