Mongodb 能否在Mongo中的单个字段上创建多个索引?那是什么样子的?

Mongodb 能否在Mongo中的单个字段上创建多个索引?那是什么样子的?,mongodb,mongodb-ruby,nosql,Mongodb,Mongodb Ruby,Nosql,我正在尝试创建一个复合键作为我的“_id”字段,它接收一些地理信息以及其他属性。它看起来像: {_id: {lat: 50, lon: 50, name: "some name"}} 创建文档后,默认情况下,mongo会指定一个索引,并忽略我的命令 db.coll.ensureIndex(_id: "2d") 有没有一种方法可以让我的_id字段索引既可以通过地理索引,也可以通过常规索引 这里有两个选项。它们都需要更改您的架构: 将\u id设置为唯一的散列,并将坐标放置在具有二维索引的单独字

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

{_id: {lat: 50, lon: 50, name: "some name"}}
创建文档后,默认情况下,mongo会指定一个索引,并忽略我的命令

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

有没有一种方法可以让我的_id字段索引既可以通过地理索引,也可以通过常规索引

这里有两个选项。它们都需要更改您的架构:

  • \u id
    设置为唯一的散列,并将坐标放置在具有二维索引的单独字段中:

    {u id:“标准ObjectId或您的hash”,name:“some name”,loc:[50,50]}

  • 如果您真的希望_id成为唯一的字段(我不建议这样做):

    {{u id:{name:“某个名字”,loc:[50,50]}

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


  • 从MongoDB文档中:

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

    您还必须确保它们也是唯一的。此外,这也会使一些假定您有BSON ID的事情变得混乱

    我只需要自己为这些字段编制索引,并创建一个复合索引