Ruby on rails 如何为MongoDB或Mongoid中的哈希字段编制索引?
我有以下mongo文件: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
{
_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”
,表示正在使用索引。