查询方式一
db.test.distinct("id").length
由于数据量较大导致报如下错误:
[thread1] Error: distinct failed: {
"ok" : 0,
"errmsg" : "distinct too big, 16mb cap",
"code" : 17217,
"codeName" : "Location17217"
} :
查询方式二
db.test.aggregate([{$project:{"id":true}}, {$group:{_id:"$id"}}, {$group:{_id:null,count:{$sum:1}}} ])
报如下错误:
Exceeded memory limit for $group, but didn’t allow external sort. Pass allowDiskUse:true to opt in
报错原因为:
mongodb执行管道操作时出现如上错误;
原因:原因是聚合的结果必须要限制在16M以内操作,(mongodb支持的最大影响信息的大小),否则必须放在磁盘中做缓存( allowDiskUse=True )
解决:增加{allowDiskUse:true}。
正确写法如下:
db.test.aggregate([{$project:{"id":true}}, {$group:{_id:"$id"}}, {$group:{_id:null,count:{$sum:1}}}],{ allowDiskUse: true })