mongodb - 如何使用 Mongoose 执行 runCommand?

标签 mongodb node.js mongoose

我正在使用 Node.js 和 Mongoose 来访问我的 MongoDB。我正在使用一个存储一些地理坐标的模型。我将它们编入索引,一切似乎都按预期工作。我想做的是从我的请求中检索最接近的东西。在 MongoDB 控制台上,我执行以下操作:

distances = db.runCommand({ geoNear : "deals", near : [11.252, 14.141], spherical : true, maxDistance : 300  }).results 

但是,我不确定如何使用 Mongoose 执行此操作。以下是有关我尝试使用的命令的更多信息:http://www.mongodb.org/display/DOCS/Geospatial+Indexing

谢谢, 何塞

最佳答案

首先,目前还没有一个方便的包装器可以直接将 geoNear 与 Mongoose 一起使用(假设您想读取计算出的距离)。

但自从 Mongoose 收藏 proxies all collection methods来自原生 MongoDB native driver你可以用他们的geoNear method ,尽管您必须放弃一些您可能期望从 Mongoose 获得的便利,并且在我的发现中,错误处理有点不同。

无论如何,这就是您可以使用上述 API 的方式:

YourModel.collection.geoNear(lon, lat, {spherical: true, maxDistance: d}, function(err, docs) {
  if (docs.results.length == 1) {
    var distance = docs.results[0].dis;
    var match = docs.results[0].obj;
  }
});

请参阅文档以了解正确的错误处理和how to calculate the distances .

关于mongodb - 如何使用 Mongoose 执行 runCommand?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5861134/

相关文章:

javascript - 如何在 Mongoose.js 中检查更新前/更新后 Hook 中的修改字段

java - 将字符串解析为 'yyyy-mm-ddThh:mm:ss.SSSZ' ISODate java

node.js - 无法让 NODE_ENV 在空类时粘在我的 MEAN 堆栈上

javascript - 我应该用 Mongoose 验证获取参数吗

node.js - NodeJS, Mongoose : How to get related data using mongoose

mysql - Node.js 图片库的数据库解决方案

mongodb - 如何在 node.js 服务器中自动重新连接 mongo?

Node.js/Mongoose/MongoDb Typescript MapReduce - emit() 和 Array.sum() 方法

node.js - 刷新页面时出现 404

node.js - 使用 $in 和 $elemMatch 匹配两个字段之一