地理空间搜索返回的结果少于可用结果

时间:2018-06-27 22:02:13

标签: mongodb

我有一个包含356个文档的集合(用户),并且在字段地理数据上具有索引“ 2dsphere”。 120个文档的地理数据字段为:{type:“ Point”,坐标:[X,Y]},其中X和Y是德国境内的坐标。

如果我执行以下聚合:

db.users.aggregate(
    [
        {
            "$geoNear":{
                near: { type: "Point", coordinates: [48.783469, 9.181842] },
                distanceField: "distanceCalculated",
                spherical: true
            }
        },
        {
             "$sort":{"distanceCalculated":1}
        }
    ]
)

我得到46个结果,但是据我了解,我应该至少得到100个(极限参数的标准值) 如我所见,所有结果都在〜210公里范围内,是否有未记录的标准maxDistance?我还尝试了不同的maxDistance值,但从未获得超过48个结果。

我的问题是,我该怎么做才能使所有(120)个结果按距离排序?

1 个答案:

答案 0 :(得分:0)

发现了陷阱: 所有(120)个文档的geodata.coordinates类型设置为object而不是array。不幸的是,我不能说为什么mongoDB仍然返回一些结果而不是null。我使用以下命令转换了所有条目,现在可以使用了:

db.users.find({ "geodata": { $exists: true, $ne: null }}).forEach((user)=> { 
  var coordinates = user.geodata.coordinates;
  user.geodata.coordinates = [coordinates["0"], coordinates["1"]];
  db.users.save(user);
});
相关问题