你可以在Mongo的单个字段上创建多个索引吗?那是什么样的?

时间:2011-02-17 18:21:20

标签: mongodb mongodb-ruby nosql

我正在尝试创建一个复合键作为我的“_id”字段,它接收一些地理信息以及其他属性。它看起来像:

{_id: {lat: 50, lon: 50, name: "some name"}}

创建文档后,mongo默认指定一个索引,并忽略我的命令

db.coll.ensureIndex(_id: "2d")

有没有办法做到这一点,所以我可以通过地理索引和常规索引使我的_id字段索引?

2 个答案:

答案 0 :(得分:1)

这里有两种选择。它们都需要更改架构:

  1. 使_id成为唯一的哈希,并将您的坐标放在具有2d索引的单独字段中:

    {_ id:“标准ObjectId或您的哈希”,名称:“some name”,loc:[50,50]}

  2. 如果你真的想让_id成为唯一的领域(我不推荐这个):

    {_ id:{name:“some name”,loc:[50,50]}}

    db.coll.ensureIndex({'_ id.loc':'2d'})

答案 1 :(得分:0)

来自MongoDB文档:

  

欢迎用户使用自己的约定来创建ID;除了数组之外,_id值可以是任何类型,只要它是唯一的。不允许使用数组,因为它们是Multikeys。

您还必须确保这些也是独一无二的。此外,这将使一些假定您拥有BSON ID

的东西搞得一团糟

我只是自己索引这些字段并制作复合索引。

http://www.mongodb.org/display/DOCS/Object+IDs