MongoDB 2.6 compatibility change-db.collection.aggregate () change
MongoDB 2.6 compatibility changes-- db.collection.aggregate() changes
described
db.collection.aggregate() method In the mongo shell, by default returns a cursor of the result set. This modification causes the aggregate pipeline to return any size result set, requiring cursor traversal to access the result set. For example:
var myCursor = db.orders.aggregate( [{$group: {_id: "$cust_id",total: { $sum: "$price" }}}] );myCursor.forEach( function(x) { printjson (x); } );
Previous versions returned a single document with the field result, which contained an array of result sets, subject to the BSON document size limit. Prior to MongoDB, accessing the result set required accessing the result field and traversing the array. For example:
var returnedDoc = db.orders.aggregate( [{$group: {_id: "$cust_id",total: { $sum: "$price" }}}] );var myArray = returnedDoc.result; // access the result fieldmyArray.forEach( function(x) { printjson (x); } );
solutions
Modify the script to expect db.collection.aggregate() to return a document with result array fields instead of processing cursors.
can refer to
converged enhanced
db.collection.aggregate()