使用 2dsphere 索引和 IP 地址索引索引 mongodb 集合

Posted

技术标签:

【中文标题】使用 2dsphere 索引和 IP 地址索引索引 mongodb 集合【英文标题】:Indexing mongodb collection with 2dsphere indexes and IP address indexes 【发布时间】:2013-06-27 16:46:19 【问题描述】:

我是 MongoDB 新手,想创建一个数据库,其中存储在集合中的位置数据(经纬度)。我计划创建 GeoJSON 对象来存储这些数据。 我想知道是否可以在此集合上创建 2 个索引,其中一个是 2Dsphere 索引,另一个索引可以是任何其他值,例如在同一集合中唯一的 IP 地址? 如果这是可能的,我该如何创建这些索引?

【问题讨论】:

我已经创建了一个集合并想要索引它,但不知道如何去做。 db.collection.ensureIndex(....) 将允许我在多个字段上创建索引,但我不知道如何创建具有 2dsphere 索引和 ipaddress 索引的索引。 【参考方案1】:

这应该可行:

db.position.ensureIndex("geoField.coordinates":"2dsphere","ipaddress":1)

看看this article

希望对你有帮助

【讨论】:

谢谢 Antonio 在这种情况下,文档对象将如下所示,对吧?如果我错了,请纠正我 geoField: type:Point coordinates:[lat, long] ipaddress: 122.0.0.7 connection: wi-fi 好吧,如果您的文档是这样的:"geoField":"type":"Point","coordinates":[lat,long],"ipaddress":"122.0.0.7","connection":"wi-fi" ... 那么您创建索引的语句将如下所示:db.collection.ensureIndex("geoField.coordinates":"2dsphere","ipaddress":1) 如果 ensureIndex 格式不是:db.position.ensureIndex("geoField":"2dsphere","ipaddress":1) 是的,这是复合索引的正确语法。答案已编辑。谢谢。

以上是关于使用 2dsphere 索引和 IP 地址索引索引 mongodb 集合的主要内容,如果未能解决你的问题,请参考以下文章

Geonear 和多个 2dsphere 索引

MongoDB 2dsphere 索引失败(几何形状错误?)

2dsphere索引

MongoDB 创建具有用于空间查询的特征数组的 2dsphere 索引

Mongodb 复合 2dsphere 索引无法按预期工作

java中地理空间字段的2dsphere索引的Spring mongodb注释......?