mongodb中的find()方法返回未定义的
我正在尝试创建一条路径,以检索具有附近位置坐标的记录。 我检查了日志,发现“docs”值未定义。我怎么了mongodb中的find()方法返回未定义的,mongodb,geospatial,geojson,Mongodb,Geospatial,Geojson,我正在尝试创建一条路径,以检索具有附近位置坐标的记录。 我检查了日志,发现“docs”值未定义。我怎么了 router.get('/userlist/:lat/:lng', function (req, res) { var db = req.db; var lat = req.params.lat, lng = req.params.lng; console.log("lat "+lat); console.log("lng "+lng); var co
router.get('/userlist/:lat/:lng', function (req, res) {
var db = req.db;
var lat = req.params.lat, lng = req.params.lng;
console.log("lat "+lat);
console.log("lng "+lng);
var collection = db.get('userlist');
collection.find({
"location": {
$nearSphere: {
$geometry: {
type: "Point" ,
coordinates: [ lat , lng ]
}
}
}
}, {}, function (e, docs) {
docs = JSON.stringify(docs);
console.log("docs "+docs);
res.send(docs);
});
});
我正在存储JSON数据,如下面的屏幕截图所示
位置应以以下格式存储:-
"location" : {
"type" : "Point",
"coordinates" : [
-70.845654,
42.146249
]
}
geojson点应该是一个对象而不是一个数组。正如@Webdev所说,坐标存储为字符串,不应为空。但我无法使用mongoose以数字形式存储它们。因此,我在find查询中将纬度和经度解析为float,它可以正常工作。检查您是否犯了经典错误,将纬度放在坐标数组的第一位,它总是[lng,lat]在里面coordinates@Sarfraaz是的,我把它按正确的顺序排列了,只有
find
返回游标。使用.toArray()
提取文档。如果有错误,也要检查错误部分<代码>集合.find({“位置”){$nearSphere:{$geometry:{type:“Point”,坐标:[lat,lng]}}}}}},{}.toArray(函数(e,docs){docs=JSON.stringify(docs);console.log(“docs”+docs);res.send(docs);})我不熟悉geojson。我在这里看到的问题是,您试图在找到收藏之前返回。你需要打同步电话。这就是你想要的吗?@ash我查了一下,发现toArray()在猫鼬中不可用。我使用的是Mongoose,我是这样存储的:'位置':{类型:“点”,坐标:[$('input#inputUserLocationLng').val(),$('input#inputUserLocationLat').val()}格式不应该是问题。lat long值将作为字符串存储在数据中。它们不应该像我的示例中那样用双引号括起来。它们是从表单中检索的。我也做了同样的分析,但在问题所附的数据中,它们显示为stringsit,这是猫鼬的问题