如何修复MongoError:geoNear没有地理索引

时间:2019-01-03 14:45:32

标签: node.js mongoose

我有一个具有Geometry类型的集合。现在,对于给定的点,我想获取最近的文档。我正在尝试将$ geoNear运算符与MongoDb结合使用。但是在我的回调中,我发现了一个错误“ MongoError:geoNear没有地理索引”。我想比我必须定义我的收藏集的索引。

所以我尝试启动此命令: $ db..createIndex({locationCoordinate:“ 2dsphere”});

但这并没有改变。

这是我的架构定义:

const MySchema = new mongoose.Schema({
  logo: { type: String, required: true },
  locationCoordinate: {
    type: {
      type: String,
      enum: ['Point'],
      default: 'Point'
    },
    coordinates: {
      type: [Number],
      required: true,
      unique: true
    }
  },
  name: { type: String, required: true }
}, {
  writeConcern: 'majority',
});

这是我的聚合函数:

myModel.aggregate([
 {
   $geoNear: {
      near: { type: "Point", coordinates: [ 17 , 65 ] },
      distanceField: "distance",
      spherical: true
   }
 }
  ], (err, results) => {
    console.log("Err", err)
  })

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以等待这样的索引:

function waitForIndex() {
    return new Promise((resolve, reject) => {
        YourModel.on('index', error => error ? reject(error) : resolve());
    });
}

然后执行异步操作。