Experts.
I'm new to MongoDB, but know enough to get my self in trouble.. case in point:
db.test.aggregate(
[
{$group: {_id: {email: "$email", gender: "$gender"}, cnt: {$sum: 1}}},
{$group: {_id: "$_id.email", cnt: {$sum: 1}}},
{$match: {cnt: 2}}
],
{allowDiskUse : true}
)
and no matter what variations I try, I keep getting the same error ("Pass allowDiskUse:true to opt in"):
Error("Printing Stack Trace")@:0 ()@src/mongo/shell/utils.js:37 ([object Array],[object Object])@src/mongo/shell/collection.js:866 @(shell):7
uncaught exception: aggregate failed: { "errmsg" : "exception: Received error in response from mongo1.mscnet.com:27017: { $err: \"Exceeded memory limit for $group, but didn't allow external sort. Pass allowDiskUse:true to opt in.\", code: 16945 }", "code" : 16945, "ok" : 0 }
FYI: I'm using Mongo 2.6
version()return in themongoshell? Also, are you using any shell extensions such as Mongo-Hacker? If so, I would try starting the shell usingmongo --norcto test without extensions. Your syntax looks correct so I'm suspecting you may inadvertently be using a version of theaggregate()helper that does not support passing options to the aggregation command (which were added in the MongoDB 2.6 shell). - Stenniemongoshell or Robomongo provideaggregate()helpers to make it more convenient to work with the underlyingaggregatecommand that runs on your MongoDB server. In versions of MongoDB prior to 2.6 the aggregate command did not support any options so older versions of theaggregate()helpers will ignore those. If--norcworks for themongoshell I suspect you have an older version of Mongo-Hacker (I committed a fix in August 2014) - Stenniemongoshell helpers just manipulate parameters before sending the command to the server (for example, allowing you to pass an aggregation pipeline as either an array or a list of pipeline steps). FYI, you can see the helper code in themongoshell by invoking without the (), eg:db.test.aggregate- Stennie