无法使用猫鼬设置2dsphere索引

时间:2019-05-06 10:48:02

标签: javascript node.js mongodb mongoose

我正在尝试为猫鼬地理空间设置2dsphere索引,但是由于某些原因,我未能做到这一点,我已经尝试了所有方法,但仍然无法获得它。

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

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

错误

找不到$ geoNear查询的索引

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

1 个答案:

答案 0 :(得分:0)

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

基本上,我正尝试像您一样设置2dsphere索引:

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

我在该收藏集中的所有文档都将此startLocation字段设置为GeoJSON值,尤其是Point ... ,除了其中一个!该startLocation字段没有任何值,因此我无法设置索引!我只是删除了那个文档,是的,索引在那里!

我是怎么想到这个的?

我正在阅读MongoDB documentation,发现了这一点:

  

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

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