javascript - 无法使用猫鼬设置 2dsphere 索引
问题描述
我正在尝试为 mongoose 地理空间设置 2dsphere 索引,但由于某些原因我没有这样做,我已经尝试了所有方法但仍然无法获得它。
这是我的架构和位置字段。
loc: {
type: { type: String, default: "Point" },
coordinates: { type: [Number] }
},
causeSchema.index({ "loc": "2dsphere" });
和错误
找不到 $geoNear 查询的索引
如果有人知道解决方案,请在这里分享。谢谢
解决方案
好吧,我实际上刚刚找到了解决方案。代码完全正确。
基本上,我试图设置一个2dsphere
索引,就像你一样:
mySchema.index({ startLocation: '2dsphere' });
我在集合中存在的所有文档都将此startLocation
字段设置为 GeoJSON 值,特别是 a Point
...除了只有一个!该字段没有任何值startLocation
,因此我无法设置索引!我刚刚删除了那个文件,是的,索引就在那里!
我是怎么想到这个的?
我正在阅读MongoDB 文档,我发现了这个:
如果文档缺少 2dsphere 索引字段(或该字段为 null 或空数组),MongoDB 不会将文档的条目添加到索引中
我认为这与这个问题有关,这让我觉得也许一个文档缺少 的价值startLocation
,事实上这就是原因。
推荐阅读
- sql - Oracle触发器-更新同一张表后更新记录
- google-chrome - Google Chrome:如何绕过 SSL 检查以用于开发目的
- python - 使用 cKDTree 查询找到最接近的三角形平面
- java - 如何在不使用 try-catch 的情况下解决 ArrayIndexOutOfBoundsException?
- node.js - Websocket 客户端覆盖彼此的连接
- c++ - 如何在实时流中从 44100Hz 样本中制作 16000Hz 样本?
- python - 悬停在标签上时也显示悬停文本
- django - 在 django 中生成 JWT 令牌,用于不同服务之间的身份验证
- postgresql - 将 HTML 内容字符串替换为 postgreSQL 中的普通文本
- c# - 从 C# 中的另一个 exe 文件中删除 Notifyicon ContextMenuStrip 项