如何在mongoose中创建地理索引

时间:2018-03-11 06:28:03

标签: mongodb mongoose 2dsphere

我尝试在我的集合中创建一个2dsphere索引,当我创建一个我应该有一个2dsphere索引的用户时。

我从这个答案中引用了Create & Find GeoLocation in mongoose

我在这种情况下使用代码:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const PointSchema = new Schema({
    type: { type: String, default: 'Point'},
    coordinates: { type: [Number], index: '2dsphere'}
});

const DriverSchema = new Schema({
    email: {
        type: String,
        required: true
    },
    driving: {
        type: Boolean,
        default: false
    },
    geometry: PointSchema
});

DriverSchema.index({ "geometry": "2dsphere"});

const Driver = mongoose.model('driver', DriverSchema);

module.exports = Driver;

但是当我创建用户时,我没有看到任何2dsphere索引。 enter image description here

我不知道哪一步出错了,希望有人能告诉我。

这是我的架构代码:

FrameLayout

提前致谢。

1 个答案:

答案 0 :(得分:1)

您需要更新您的架构,如下所示:

coordinates: {
  type: [Number], // <lng, lat>
  index: { type: '2dsphere', sparse: false },
  required: true,
},

在此之后创建一个新记录并像这样检查Robo 3T

db.hotspot.aggregate([{$indexStats: {}}]);

然后你会得到这个输出:

{
    "name" : "location_2dsphere",
    "key" : {
        "coordinates" : "2dsphere"
    },
    "host" : "neel-Vostro-1450:27017",
    "accesses" : {
        "ops" : NumberLong(0),
        "since" : ISODate("2018-03-11T14:04:12.785Z")
    }
}