美文网首页
mongoose 空间查询

mongoose 空间查询

作者: 大洪 | 来源:发表于2018-04-26 17:21 被阅读25次

  工作中我用了Koa2做了后台,选用了mongo数据库。因为要用到空间查询显示当前地图视图的空间查询结果,经过一番搜索,总算解决了。

  mongoose支持的空间查询方式有near,box,circle以及geometry等等,基本满足了业务需求。我只用到了box查询,所以下面就分享一下我是如何使用的:

model设计

  设计model时一定要设计好geom结构,不然提示报错。最开始我把geom的类型设计成{type: String, coordinates: [Number]},结果运行时提示不允许在String上面执行$geoWithin语句。这里的type与mongoose中设置类型的type有冲突,所以geom被误认为成了String.

const mongoose = require('../tool/db-util').mongoose
const Schema = mongoose.Schema

const projectSchema = new Schema({

  ... ...
  
  build_reason: String,
  build_type: String,

  geom: {
    type: {type: String},
    coordinates: [Number]
  }
})
// 创建空间索引
projectSchema.index({ 'geom': '2dsphere' })
// 开启调试
mongoose.set('debug', true)

const ProjectModel = mongoose.model('project', projectSchema)
module.exports = {
  ProjectModel
}

查询方法

  方法一和方法二执行效果相同,只是写法不一样

  static async all (condition, extent, page, size) {
      let extent = condition.extent.split(',')
      let box = [[Number(extent[0]), Number(extent[1])], [Number(extent[2]), Number(extent[3])]

      // 方法一
      // let projects = await ProjectModel.find(condition).where('geom').within().box(box[0], box[1]).skip((page - 1) * size).limit(size)
      // 方法二
      let projects = await ProjectModel.find(condition).where('geom').within({box}).skip((page - 1) * size).limit(size)
      let count = await ProjectModel.count(condition)
      return {projects, page: {page, size, count}}
    }
  }

运行结果

  正常


查询过程 前台展示

相关文章

  • mongoose 空间查询

      工作中我用了Koa2做了后台,选用了mongo数据库。因为要用到空间查询显示当前地图视图的空间查询结果,经过一...

  • nodejs操作mongodb数据库(mongoose)

    创建项目目录并安装mongodb、mongoose mongoose插入数据 mongoose查询数据 mongo...

  • # nodejs操作mongodb数据库(mongoose)

    创建项目目录并安装mongodb和mongoose(在root下) mongoose插入数据 mongoose查询...

  • Mongoose介绍和入门

    Mongoose介绍和入门 mongoose对查询结果进行排序 mongoose教程06--排序 MyModel....

  • node之mongoose(二)

    Mongoose 常见查询方法 Mongoose库提供了find , findOne , findById 等方法...

  • mongoose学习笔记

    首先是基础crud操作 查询简单查询条件查询 插入 更新 查询 简单查询 mongoose: 条件查询 (>) 大...

  • Node操作mongodb

    一、下载Node的数据库三方包(mongoose) npm install mongoose 二、查询 三、删除 ...

  • mongoose使用之查询篇

    查询基础 1、查询方法 mongoose查询使用最基础的方法就是find、findOne方法,前者查询所有满足条件...

  • koa mongoose查询

    一、分页查询+查询所有 二、添加数据到数据库 注:new Article为创建对应的数据模型 三、删除数据 四、修改数据

  • Mongoose 查询文档

    本文已整理到 Github,地址 ? blog[https://github.com/lio-zero/blog...

网友评论

      本文标题:mongoose 空间查询

      本文链接:https://www.haomeiwen.com/subject/zzvylftx.html