蒙古石 - 明显太大,16mb帽

时间:2018-04-11 19:50:59

标签: r mongodb mongolite

我试图查询我的数据库ratingsChoices= m$distinct({'answers'}),但我得到了Warning: Error in : distinct too big, 16mb cap

mongolite中是否有解决此错误的方法?我在PyMongo等方面遇到过类似的问题

1 个答案:

答案 0 :(得分:2)

  

mongolite中有这种错误吗?

这里的问题是因为当您调用m$distinct时会调用distinct命令。有关详情,请参阅更多MongoDB Database commands

distinct命令返回单个文档。 maximum BSON document size限制为16兆字节。因此,如果您有许多不同的值和/或大字段超过服务器返回的最大大小16MB,您将收到上述错误消息。

另一种方法是使用MongoDB Aggregation Pipeline而不是distinct命令。幸运的是mongolite支持:mongolite aggregate

通过游标返回聚合管道结果,可以对其进行迭代。这意味着您可以获取超过16MB最大限制的结果。

例如(使用MongoDB v3.6和mongolite v2017-12-21):

uniqueName <- m$aggregate('[{"$group":{"_id":"$answers"}}]')
print(uniqueName)