MongoDB $靠近地理空间查询,稀疏复合索引错误13311

 Jerl 发布于 2023-01-31 08:23

我创建了一个支持地址预测的查询,类似于Google商家信息自动填充,其中输入字段将尝试通过查找集合中最近的匹配地址(基于geo-ip-location)来预测输入的地址.

我的集合中的每个文档都包含一个地址字符串,而地址的坐标却不是每个文档都有地址或坐标.

该集合还包括如下创建的复合索引:

db.collection.ensureIndex({address:1,coordinates:"2dsphere"},{sparse:true,background:true});

我的问题是当我执行查询时,如果结果集包含一个具有地址字段但没有坐标字段的文档,我会收到以下错误:

{$ err:"字段的错误类型()10!= 2","code":13111}

10是用于null的BSON类型,2是用于字符串的BSON类型.

当存在复合索引时,MongoDB的地理空间搜索不会跳过没有坐标的文档.(它使用简单的索引跳过它们.)我试图通过创建稀疏索引来解决这个问题,但稀疏选项仅适用于复合索引中的第一个字段.

是否有另一种方法可以执行快速地理空间$ near查询和/或创建仅包含所有索引字段所在的文档的复合索引?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有