首页 > 解决方案 > 无法使用猫鼬设置 2dsphere 索引

问题描述

我正在尝试为 mongoose 地理空间设置 2dsphere 索引,但由于某些原因我没有这样做,我已经尝试了所有方法但仍然无法获得它。

这是我的架构和位置字段。

loc: {
     type: { type: String, default: "Point" },
     coordinates: { type: [Number] }
},
causeSchema.index({ "loc": "2dsphere" });

和错误

找不到 $geoNear 查询的索引

如果有人知道解决方案,请在这里分享。谢谢

标签: javascriptnode.jsmongodbmongoose

解决方案


好吧,我实际上刚刚找到了解决方案。代码完全正确。

基本上,我试图设置一个2dsphere索引,就像你一样:

mySchema.index({ startLocation: '2dsphere' });

我在集合中存在的所有文档都将此startLocation字段设置为 GeoJSON 值,特别是 a Point...除了只有一个!该字段没有任何值startLocation,因此我无法设置索引!我刚刚删除了那个文件,是的,索引就在那里!

我是怎么想到这个的?

我正在阅读MongoDB 文档,我发现了这个:

如果文档缺少 2dsphere 索引字段(或该字段为 null 或空数组),MongoDB 不会将文档的条目添加到索引中

我认为这与这个问题有关,这让我觉得也许一个文档缺少 的价值startLocation,事实上这就是原因。


推荐阅读