为什么find和aggregate在这里返回不同数量的文档?我没有胶水为什么 . 这是一个错误还是我错在哪里?我为mongo db shell提供了这个小小的代码 . 我只查看距离给定位置一定半径范围内的文档 . geojson_loc 是此集合的2dsphere索引和 only 索引 . 对于任何解释可能解释我在这里做错了什么 .

码:

db = new Mongo("localhost").getDB("dbname");
print("All docs:"+db.coll.find().count())

docs = db.coll.find({"geojson_loc":{"$near" :{"$geometry":{"type":"Point", 
    "coordinates": [11.575433, 48.137289]}, "$maxDistance" : 20000.0 }}}).count()
print("with find:"+docs)

cc = db.coll.aggregate({'$geoNear': {'spherical': true, 'limit': 1500000, 
'near': {'type': 'Point', 'coordinates': [11.575433, 48.137289]}, 'maxDistance': 20000.0, 'distanceField':
'temp.distance'}})
count = 0;

cc.forEach(function(doc){
count++;});

print("with aggregate:"+ count);

结果是:所有文档:25000,找到:13000,聚合:4000

我希望:所有文档:25000找到:13000聚合:13000或:所有文档:25000找到:4000聚合:4000

EDIT: 如果我在没有聚合的情况下运行$ geoNear,它将返回与聚合内相同数量的文档 . 返回文档的大小为88MB,可能超过了可以返回的最大BSON文档大小的16MB限制 . 有没有办法在聚合中使用$ geoNear而没有这个大小的限制或者在我知道的情况下根本不可能接近$?