使用geoNear时,将忽略所有没有位置(不是2dsphere索引的一部分)的行。
如何使用geoNear获取最接近的结果,同时显示没有位置的其他行?没有位置的行在结果中的排名应较低。
.collection('users')
.aggregate([
{
$geoNear: {
near: { type: "Point", coordinates: [userLocArray[0], userLocArray[1]]},
distanceField: "dist.calculated",
spherical: true,
//maxDistance: matchDistance,
}
},
示例文档(在下面的示例中,用户xyz
和mmm
被geoNear
省略,因为他们没有位置字段。我只是希望他们排名最低,但不完全省略。
db={
users: [
{
_id: "abc",
name: "abc",
group: 1,
location: {
type: "Point",
coordinates: [
53.23,
67.12
]
},
calculatedDist: 112
},
{
_id: "xyz",
name: "xyyy",
group: 1,
calculatedDist: 13
},
{
_id: "123",
name: "yyy",
group: 1,
location: {
type: "Point",
coordinates: [
54.23,
67.12
]
},
calculatedDist: 13
},
{
_id: "rrr",
name: "tttt",
group: 1,
location: {
type: "Point",
coordinates: [
51.23,
64.12
]
},
calculatedDist: 14
},
{
_id: "mmm",
name: "mmmm",
group: 1,
calculatedDist: 14
},
]
}
1条答案
按热度按时间mzsu5hc01#
您只需在管道末尾添加另一个
$match
阶段,即可选择那些没有位置的文档是的,你是对的,Mongo Playground不能演示2d球指数行为。但我还是在这里放了it。