lib/mongo/operation/commands/aggregate.rb in mongo-2.1.2 vs lib/mongo/operation/commands/aggregate.rb in mongo-2.2.0.rc0
- old
+ new
@@ -10,61 +10,55 @@
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-require 'mongo/operation/commands/aggregate/result'
-
module Mongo
module Operation
+ module Commands
- # A MongoDB aggregate operation.
- #
- # @note An aggregate operation can behave like a read and return a
- # result set, or can behave like a write operation and
- # output results to a user-specified collection.
- #
- # @example Create the aggregate operation.
- # Aggregate.new({
- # :selector => {
- # :aggregate => 'test_coll', :pipeline => [{ '$out' => 'test-out' }]
- # },
- # :db_name => 'test_db'
- # })
- #
- # Initialization:
- # param [ Hash ] spec The specifications for the operation.
- #
- # option spec :selector [ Hash ] The aggregate selector.
- # option spec :db_name [ String ] The name of the database on which
- # the operation should be executed.
- # option spec :options [ Hash ] Options for the aggregate command.
- #
- # @since 2.0.0
- class Aggregate
- include Specifiable
- include Limited
- include Executable
- include ReadPreference
+ # A MongoDB aggregate operation.
+ #
+ # @note An aggregate operation can behave like a read and return a
+ # result set, or can behave like a write operation and
+ # output results to a user-specified collection.
+ #
+ # @example Create the aggregate operation.
+ # Aggregate.new({
+ # :selector => {
+ # :aggregate => 'test_coll', :pipeline => [{ '$out' => 'test-out' }]
+ # },
+ # :db_name => 'test_db'
+ # })
+ #
+ # Initialization:
+ # param [ Hash ] spec The specifications for the operation.
+ #
+ # option spec :selector [ Hash ] The aggregate selector.
+ # option spec :db_name [ String ] The name of the database on which
+ # the operation should be executed.
+ # option spec :options [ Hash ] Options for the aggregate command.
+ #
+ # @since 2.0.0
+ class Aggregate < Command
- private
+ private
- def query_coll
- Database::COMMAND
- end
+ def filter_selector(context)
+ return selector if context.features.write_command_enabled?
+ selector.reject{ |option, value| option.to_s == 'cursor' }
+ end
- def filter_selector(context)
- return selector if context.features.write_command_enabled?
- selector.reject{ |option, value| option.to_s == 'cursor' }
- end
-
- def update_selector(context)
- if context.mongos? && read_pref = read.to_mongos
- sel = selector[:$query] ? filter_selector(context) : { :$query => filter_selector(context) }
- sel.merge(:$readPreference => read_pref)
- else
- filter_selector(context)
+ def update_selector(context)
+ if context.mongos? && read_pref = read.to_mongos
+ sel = selector[:$query] ? filter_selector(context) : { :$query => filter_selector(context) }
+ sel.merge(:$readPreference => read_pref)
+ else
+ filter_selector(context)
+ end
end
end
end
end
end
+
+require 'mongo/operation/commands/aggregate/result'