首页 文章

Geospacial搜索返回的结果少于可用结果

提问于
浏览
0

我有一个集合(用户)在字段地理数据上有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

    发现陷阱:所有(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);
    });
    

相关问题