Articles of 地理空间

Mongoose $ near查询返回parsing错误

这是一个对象的例子: { "_id" : "581994", "type" : "Feature", "geometry" : { "type" : "Point", "coordinates" : [ -149.0133, 64.7439 ] } } 这是我执行的查询: Earthquake .find({ geometry: { $near: { $geometry: { type: 'Point', coordinates: [lon, lat] } } } }) .exec(function(err, results) { if (err) { console.log(err); } return reply(results); }) 这是我创build的模型模式: var mongoose = […]

如何在mongoose和nodejs中使用$ geoNear

我试图显示两个坐标之间的距离。 下面的查询执行并按预期给出结果 db.runCommand( { geoNear: "distances", near: [ 83.307974, 17.716456], spherical: true } ); 我想从nodejs脚本执行此查询。 我正在使用mongoose。 我试过聚合函数,但我没有得到结果。 有人能以正确的方式引导我! 我试过这个: db.getCollection('distances').aggregate([ { "$geoNear": { "near": { "type": "Point", "locc": [83.307974, 17.716456] }, "distanceField": "distance", "spherical": true } } ]); 参考文献: geoNear Stackoverflow问题 geoNeam MongoDB

在MongoDB中以半径(以米为单位)的查询点

您好,我无法获取在经度和纬度坐标X和Y范围内半径R(米)内的所有文件 我在我的collections中使用了2D遗留索引 db.users.createIndex({'location': '2d'}); 我正在尝试以下内容: var users = db.collection('users'); users.find( { location: { $geoWithin { $center [ [ Y, X ], R / 6378100 ] } } }); 我非常确定这是[Y,X]经度,然后是纬度。 6378100是根据谷歌的地球半径。 我有点应该是相距<50米,所以R = 50应该find他们,但我必须使R约4000,这是相当奇怪的。 有任何想法吗?

按$ geonear汇总

我有一个看起来像这样的集合: [ { "roadname": "foo", "data": [ { "val": 50, "loc": { "type": "Point", "coordinates": [3.197033554, 50.64611712] } } }, { "val": NULL, "loc": { "type": "Point", "coordinates": [3.197740735, 50.6460058] } } } ] }, { "roadname": "foo", "data": [ { "val": 50, "loc": { "type": "Point", "coordinates": [3.32456512, 50.2744516] } } } ] }, […]

查询抱怨缺less2dsphere-index,但它在那里

当我执行下面的代码(一个更大的例子,归结为要领) var mongoose = require("mongoose"); var LocationSchema = new mongoose.Schema({ userName: String, loc: { 'type': { type: String, enum: "Point", default: "Point" }, coordinates: { type: [Number] } } }) LocationSchema.index({ category: 1, loc: "2dsphere" }); var Location = mongoose.model("location", LocationSchema); var mongoDB = 'mongodb://user1:test@ds042417.mlab.com:42417/locationdemo'; mongoose.Promise = global.Promise; mongoose.connect(mongoDB, { useMongoClient: true }); var testUser […]

多边形内的mongoose地理查询

不知何故,我疯了,但让我解释一下。 我有一个文件集合,其中每个文档在“loc”字段中都有一个GPS坐标(下面的示例)。 现在我想查询所有在特定区域的文件。 当我使用MongoShell进行查询时,我得到了正确的结果,但是当我使用Mongoose进行尝试时,每次尝试都失败。 正如你在下面看到的,我尝试了使用2和3 []围绕多边形坐标的不同尝试。 MongoDB版本:2.6.3 Mongoose版本:3.8.13 也许有人可以帮我findtypes或其他一些愚蠢的错误,我没有看到;(可惜的是错误信息“undefined不是一个函数”并没有太大的帮助。 谢谢! mongoose,架构 (function () { module.exports = function (mongoose, Schema) { var PointSchema = new Schema({ _id: Schema.ObjectId, loc: { type: { type: String }, coordinates: { type: [Number]} } }, { collection: "points" }); PointSchema.index({ loc: "2dsphere" }); mongoose.model("Point", PointSchema); }; })(); 来自集合的示例文档 { "_id": […]

将variables传递到node.js mongoose查找查询

我希望你们能帮忙 我对node.js / mongodb相当陌生,而且在将variables传递给mongoose模型查询时遇到了问题。 如果我运行这个,作为string手动传递经度/纬度(-0.18,51.24),那么它完美的工作,并从数据库中返回大量的对象。 Venue.find( { location : { $nearSphere : [-0.18, 51.24], $maxDistance : 25/3959 } }, null, {limit: 50}, function(err, results){ results.forEach(function(result){ console.log('Found a record'); }); }); 但是,如果我尝试并将这些坐标作为variables传入此函数运行它不会返回任何结果: function generateWorld(get) { console.log('Generating for x:' + get.longitude + ' y:' + get.latitude); // Console logs correct coords Venue.find( { location : { $nearSphere […]

最好的方式查询附近经纬度的数据库?

我有一个集或lat / longs存储在一个数据库。 我想查询数据库,并返回在另一个经纬度范围内的文件。 我知道如何确定两组之间的距离,但是我不想为db中的每个条目都做这个。 达到这个目标的最好方法是什么? 非常感谢。

与geonear的mongoose聚合

我试图用Mongoose geoNear命令实现分页。 它似乎跳过不支持与geoNear,我明白聚合将工作(与分页与性能成本)。 我怎样才能转换为聚合查询跳过一些文件? exports.near = function(req, res) { if(req.query.lat && req.query.lng) { var point = { type: "Point", coordinates : [Number(req.query.lng), Number(req.query.lat)] }; var queryParams = { spherical: true, skip: 0, limit: 10, distanceMultiplier: 6371 // radians to kilometers. (The radius of the Earth is approximately 3,959 miles or 6,371 kilometers.) }; if(req.query.q) { […]

地理空间应用:mySql vs CouchDB vs其他

我正在谷歌地图上开发一个应用程序,并检出各种选项来存储和检索边界框中的空间信息。 最初我以为MySql不是一个好的select,但在检查http://dev.mysql.com/doc/refman/5.6/en/spatial-analysis-functions.html和http://code.google.com/apis /maps/articles/phpsqlsearch.html ,看起来像我可以使用MySql,它支持我的用例。 我也用geocouch来评估node.js和couchdb。对于像socket.io这样的模块,geo等看起来也是一个不错的select。 请查阅“GEO,CouchDB和Node.js入门”一书。 我的应用程序将是1页的应用程序,我不会预见,如果我将来需要任何时候rdbms。 我也看到了这个 – http://nodeguide.com/convincing_the_boss.html ,这让我有点担心是否去node.js-geocouch …. 如果您的下一个应用程序的体系结构像NoSQL成分的食谱一样,请暂停一下并阅读此内容。 是的,Redis,CouchDB,MongoDB,Riak,Casandra等都看起来很诱人,但是红苹果Eve也忍不住。 如果您已经在使用node.js来承担技术风险,那么您不应该使用更多可能还不完全了解的技术。 当然,select一个面向文档的数据库有合法的用例。 但是如果你试图在你的软件之上build立一个业务,坚持保守的数据库技术(比如postgres或者mysql)可能会超过满足你内心的书呆子和给你的朋友留下印象的好处。 你有什么意见 ?