专家们 .
我是MongoDB的新手,但我知道自己遇到了麻烦......例如:
db.test.aggregate(
[
{$group: {_id: {email: "$email", gender: "$gender"}, cnt: {$sum: 1}}},
{$group: {_id: "$_id.email", cnt: {$sum: 1}}},
{$match: {cnt: 2}}
],
{allowDiskUse : true}
)
无论我尝试什么变化,我都会遇到同样的错误(“Pass allowDiskUse:true to opt in”):
错误(“打印堆栈跟踪”)@:0()@src / mongo / shell / utils.js:37([对象数组],[对象对象])@src / mongo / shell / collection.js:866 @ (shell):7未捕获的异常:聚合失败:{“errmsg”:“异常:mongo1.mscnet.com:27017响应收到错误:{$ err:\”$ group超出内存限制,但不允许外部排序 . 传递allowDiskUse:true以选择加入 . \“,代码:16945}”,“code”:16945,“ok”:0}
仅供参考:我使用的是Mongo 2.6
3 回答
请在运行命令中使用聚合查询,它将允许使用allowDiskUse标记 .
试着写这样的,
还有一件事,
关于最大文档大小的错误是Mongo固有的 . Mongo永远不会返回大于16兆字节的文档(或其数组) . 我可以提及有关数据大小的任何内容,但这可能意味着您构建的最终结果文档太大 . 尝试减少$ limit参数,也许?首先将其设置为1,运行测试,然后增加测试,并查看执行此操作时结果的大小
如果你正在使用m10或更高版本的MongoDB Atlas,下面是_2377393的修复_如果你通过mongoose从应用程序访问数据,那么它应该是语法作为函数 . 例如:
MongoDb查询:
使用猫鼬:
这将解决应用程序错误:)