Mongodb Geospacial搜索返回的结果少于可用结果
我有一个包含356个文档的集合(用户)和一个索引“2dsphere”,位于现场地理数据上。120个文档有一个字段地理数据:{type:“Point”,坐标:[X,Y]},其中X和Y是德国境内的坐标 如果我执行以下聚合:Mongodb Geospacial搜索返回的结果少于可用结果,mongodb,Mongodb,我有一个包含356个文档的集合(用户)和一个索引“2dsphere”,位于现场地理数据上。120个文档有一个字段地理数据:{type:“Point”,坐标:[X,Y]},其中X和Y是德国境内的坐标 如果我执行以下聚合: db.users.aggregate( [ { "$geoNear":{ near: { type: "Point", coordinates: [48.783469, 9.181842] },
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)个结果,我必须做些什么?找到了陷阱:
所有(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);
});