Ruby on rails 如何为MongoDB或Mongoid中的哈希字段编制索引?

Ruby on rails 如何为MongoDB或Mongoid中的哈希字段编制索引?,ruby-on-rails,mongodb,mongoid,Ruby On Rails,Mongodb,Mongoid,我有以下mongo文件: { _id: 'someid', name: 'John Doe', address: { city: 'Osaka', country: 'Japan' } } 如何按城市和国家进行索引?来自: 对嵌入字段进行索引 您可以在子文档中嵌入的字段上创建索引,就像您可以为文档中的顶级字段编制索引一样。[…]相反,嵌入字段上的索引允许您使用“点表示法”,对子文档进行内省 [……] db.people.ensureIndex( { "addre

我有以下mongo文件:

{
  _id: 'someid',
  name: 'John Doe',
  address: {
    city: 'Osaka',
    country: 'Japan'
  }
}
如何按城市和国家进行索引?

来自:

对嵌入字段进行索引

您可以在子文档中嵌入的字段上创建索引,就像您可以为文档中的顶级字段编制索引一样。[…]相反,嵌入字段上的索引允许您使用“点表示法”,对子文档进行内省

[……]

db.people.ensureIndex( { "address.zipcode": 1 } )
Mongoid使用相同的方法:

您还可以在嵌入的文档字段上定义索引

class Person
  include Mongoid::Document
  embeds_many :addresses
  index "addresses.street"
end
所以你想要这样的东西:

class C
  include Mongoid::Document
  index 'address.city'
  index 'address.country'
  #...
end
从:

对嵌入字段进行索引

您可以在子文档中嵌入的字段上创建索引,就像您可以为文档中的顶级字段编制索引一样。[…]相反,嵌入字段上的索引允许您使用“点表示法”,对子文档进行内省

[……]

db.people.ensureIndex( { "address.zipcode": 1 } )
Mongoid使用相同的方法:

您还可以在嵌入的文档字段上定义索引

class Person
  include Mongoid::Document
  embeds_many :addresses
  index "addresses.street"
end
所以你想要这样的东西:

class C
  include Mongoid::Document
  index 'address.city'
  index 'address.country'
  #...
end

但地址不是嵌入的文档。这是一个简单的散列字段。@CoffeeBite:你试过了吗?我设置了一个与您的示例数据相匹配的快速集合,在
address.city
上执行了
ensureIndex
,然后执行
db.x.find({'address.city':'c'})。explain()
表示查询使用了
“BtreeCursor address.city_1”
,表示正在使用索引。但address不是嵌入式文档。这是一个简单的散列字段。@CoffeeBite:你试过了吗?我设置了一个与您的示例数据相匹配的快速集合,在
address.city
上执行了
ensureIndex
,然后执行
db.x.find({'address.city':'c'})。explain()
表示查询使用了
“BtreeCursor address.city_1”
,表示正在使用索引。