需求是得到一定返回内的活动数据 这个要用到mongoodb的 2d 距离计算功能 需要给活动增加个gps 的距离 先写个demo 吧
var niefengjun=mongoose.Schema({
id:String,
title:String,
gps: [{
type: Number,
max: 180,
min: -180,
default: 0
}]
})
niefengjun.index({gps: '2d', name: 1});插入数据时
var ret={} ;
ret.id='fdfd333r334343' ;
ret.title='xiaonie' ;
var db=new activity.niefengjun(
{
id:ret.id,
title:ret.niefengjun,
gps:[parseFloat(39.996598),parseFloat(116.457803)] //前面是纬度 后面是精度
}
)
db.save(ret,function(err,body)
{
console.log(err,body) ;
}查询时
var q = {
gps: {
$near: [3.996598,116.457803], //前面是纬度 后面是精度
$maxDistance: 10/ 111.12 //10公里之内的数据
},
//typeDef: 1
}
var query=activity.niefengjun.find(q) ;
query.exec(function (err, result) {
console.log(err,result) ;
}) 特别要注意的是 记录gps里的数据必须是float 型 如果是string 不能计算距离
你打算打赏多少钱呢?
(微信扫一扫)