0
我試圖找到正確的方式來查詢給定的場景。Mongoose地理空間查詢查找包含給定點的所有用戶範圍
我有一堆用戶位置latlng和用戶定義的半徑。 而我有一個感興趣的地點latlng。 現在我想找到所有用戶的球體,包括感興趣的點。
我爲您提供如何查詢,但這顯然是錯誤的。
模式:
const POISchema = new mongoose.Schema({
poi_uuid: {type: String, required: true},
category_uuid: {type: Number, required: true},
category: {type: String, ref: 'SubCategory'},
activity: {type: String, required: false},
infos: {type: String, required: false},
location: {
coordinates: {type: [Number], index: '2d', required: false, default: []}
}
}, {usePushEach: true});
const UserSchema = new mongoose.Schema({
user_uuid: {type: String, required: true},
helper_radius: {type: Number, required: true},
address: {
coordinates: {type: [Number], index: '2d', required: false, default: []}
}
}, {usePushEach: true});
查詢:
User.find()
.and([
{
latlng: {
$near: [parseFloat(obj.coordinates[0]), parseFloat(obj.coordinates[1])],
$maxDistance: parseFloat(20/111.2)
}
},
{'_id': {'$ne': obj._id}},
{'categories': obj.category_uuid}
])
.exec(function (err, users) {
if (err) {
console.log(err);
return res.send(500, JSON.stringify(err))
}
return res.send({users: users})
})
我知道,我可能必須使用$ geoWithin或$ geoIntersects。但我真的不知道如何和我閱讀像我能找到的一切。我甚至都沒有找到如何使用貓鼬爲具有定義半徑的2D球體聲明模式字段。也許有人可以指引我正確的方向或有一些有用的鏈接。
的「maxdistance」由用戶定義,可以是爲他們每個人的不同。 – Sprotte
@Sprotte能否請您包括用戶的模式和興趣點? – enrichz
我編輯帖子感謝你的幫助 – Sprotte