从node express mongoose mongoDb中获取地理位置数据中的城市名称,可以通过以下步骤实现:
const mongoose = require('mongoose');
const locationSchema = new mongoose.Schema({
city: String,
coordinates: {
type: {
type: String,
enum: ['Point'],
required: true
},
coordinates: {
type: [Number],
required: true
}
}
});
locationSchema.index({ coordinates: '2dsphere' });
const Location = mongoose.model('Location', locationSchema);
module.exports = Location;
在上述示例中,我们定义了一个名为Location的模型,包含一个city字段和一个coordinates字段。coordinates字段使用GeoJSON格式,并定义了一个2dsphere索引,以支持地理位置查询。
const Location = require('./models/location');
const newLocation = new Location({
city: '北京',
coordinates: {
type: 'Point',
coordinates: [116.407394, 39.904211] // 北京的经纬度坐标
}
});
newLocation.save((err, savedLocation) => {
if (err) {
console.error(err);
} else {
console.log('地理位置数据保存成功!');
}
});
在上述示例中,我们创建了一个名为newLocation的地理位置对象,并将其保存到数据库中。
const Location = require('./models/location');
const longitude = 116.407394; // 经度
const latitude = 39.904211; // 纬度
const maxDistance = 10000; // 最大距离(单位:米)
Location.find({
coordinates: {
$near: {
$geometry: {
type: 'Point',
coordinates: [longitude, latitude]
},
$maxDistance: maxDistance
}
}
}, (err, locations) => {
if (err) {
console.error(err);
} else {
const cities = locations.map(location => location.city);
console.log('找到的城市名称:', cities);
}
});
在上述示例中,我们使用了$near查询操作符和$maxDistance查询限制符,从地理位置数据中查找离指定坐标一定距离范围内的数据。然后,我们将找到的城市名称存储在cities数组中,并进行打印输出。
综上所述,通过以上步骤,我们可以从node express mongoose mongoDb中的地理位置数据中获取城市名称。
领取专属 10元无门槛券
手把手带您无忧上云