我已经使用MongoDB的collection.geoNear已有一段时间了,但是现在我需要使用$ near来查询我不成功的集合。在这里,我用每种方法设置了两个查询。这两个对我来说看起来完全一样。
但是,后一个返回一个空数组,而前一个返回100%
app.get("/somerouter", (req, res) => {
var lat = parseFloat(req.query.lat)
var lon = parseFloat(req.query.lon)
collection.geoNear(
{type: "Point", coordinates: [lon,lat]},
{maxDistance: 50000, spherical: true}
).then((post) => {
res.send({post});
}, (e) => {
res.status(400).send(e);
})
});
返回空数组的代码:
app.get("/somerouter", (req, res) => {
var id = req.params.cat
var lat = parseFloat(req.query.lat)
var lon = parseFloat(req.query.lon)
collection.find(
{
location:
{
type: "Point",
$near: {
coordinates: [lon,lat],
$maxDistance: 50000
}
}
}
)
以下是该模式的摘录,向您展示了如何通过Mongoose设置集合:
...
location: {
type: {type: String, default: 'Point'},
coordinates: {type: Array, default: [0,0], index: "2dsphere"}
}
...