0

我想找到集合中给定字段的所有不同值。distinct()操作似乎最大为 16 MB,这是非常低的。我想将这些不同的值存储在一个集合中以供以后使用,或者能够对limit()它们进行分页。

项目数量约为 5000 万,约 5 GB。

实现这一目标的最佳方法是什么?

4

1 回答 1

0

我也有完全一样的问题。

distinct()将超过 16MB 的文档限制。因此,剩下的唯一选择是使用 a map-reduce,但如果该字段已被索引,则不会利用。

mf=function() { emit ( this.field_of_interest , {} ); };
rf=function(key, emits) { return {}  };
db.YourCollection.mapReduce( mf, rf, { out: {replace: "UniqueValues" } } );
于 2014-06-19T00:14:37.607 回答