我有一个具有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)
})
我做错了什么?
答案 0 :(得分:0)
您可以等待这样的索引:
function waitForIndex() {
return new Promise((resolve, reject) => {
YourModel.on('index', error => error ? reject(error) : resolve());
});
}
然后执行异步操作。