В оболочке MongoDB, если я сделаю следующее, то будет создан индекс, а также предотвращение вставки повторяющихся записей:
db.analytics.ensureIndex({page: 1, some_id: 1, ga_date: -1}, {unique: true});
Но я думал, что Mongoid может сделать то же самое: http://mongoid.org/docs/indexing/
Так что я:
class PageAnalytic < Analytic
include Mongoid::Document
field :page, :type => String
field :some_id, :type => Integer
field :ga_date, :type => Time
field :pageviews, :type => Integer
field :timeOnPage, :type => Integer
index(
[
[ :page, Mongo::ASCENDING ],
[ :some_id, Mongo::ASCENDING ],
[ :ga_date, Mongo::DESCENDING ]
],
:unique => true
)
end
и сделать
rake db:create_indexes
но все же дубликаты записей можно вставлять?
Обновление: довольно странно, но после того, как я добавил индекс в оболочке MongoDB и удалил коллекцию, а затем пересоздал индекс либо в MongoDB Shell, либо в Mongoid, теперь я могу удалить коллекцию в MongoDB shell, а затем rake создайте индекс и используйте mongoid, чтобы дважды добавить одни и те же документы, и mongod сообщит об ошибке для дублирующего ключа.