mongodb near java_MongoDB找到$ near并汇总$ geoNear返回不同的结果

为什么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而没有这个大小的限制或者在我知道的情况下根本不可能接近$?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值