我想找到集合中给定字段的所有不同值。 distinct()操作似乎最大为16 MB,这非常低。我希望将这些不同的值存储在集合中以供日后使用,或者能够limit()
对其进行分页。
项目数量约为5000万,约为5千兆字节。
实现这一目标的最佳方式是什么?
答案 0 :(得分:0)
我有完全相同的问题。
distinct()
将超过16MB的文档限制。因此,剩下的唯一选择是使用map-reduce
,但如果该字段已被编入索引,则不会占用优势。
mf=function() { emit ( this.field_of_interest , {} ); };
rf=function(key, emits) { return {} };
db.YourCollection.mapReduce( mf, rf, { out: {replace: "UniqueValues" } } );