在mongo
控制台中,我可以执行db.collection.getIndexes()
来查看为特定集合定义的所有索引。
上述查询的mongoid
等价物是什么?
采用this参考
我试过了:
CollectionName.collection.getIndexes()
但它没有这样的方法。您似乎可以在mongoid 3.0
中执行上述查询,但不能在mongoid 2.4
中执行。
答案 0 :(得分:2)
如果CollectionName
是您的模型,那么CollectionName.collection
将是Moped::Collection
。要从Moped::Collection
获取集合的索引,请使用indexes
方法:
indexes = CollectionName.collection.indexes
然后您可以使用each
来查看索引:
CollectionName.collection.indexes.each do |index|
# index['key'] has the keys as a Hash
# index['unique'] will be true for a unique index
# ...
end
Mongoid API和Moped API可能值得一看。
如果你在Mongoid2的土地上,那么我认为你必须使用标准的低级MongoDB接口而不是Moped。在这种情况下,CollectionName.collection.driver
将是Mongo::Collection
,索引方法将是:
create_index
和ensure_index
用于创建索引。drop_index
用于删除索引。drop_indexes
一次性删除所有索引。index_information
用于获取有关集合索引的信息。在您的情况下,您需要查看CollectionName.collection.driver.index_information
哈希。
答案 1 :(得分:1)
最后遇到了获取索引的命令:
CollectionName.collection.index_information
但我想知道,为什么文档中的任何地方都没有提到上述命令?