In der MongoDB Schale, wenn ich folgende tun, dann wird ein Index erstellt, und auch verhindern, dass doppelte Datensätze aus eingefügt werden:Warum kann MongoDB einen eindeutigen Index erstellen, aber Mongoid nicht?
db.analytics.ensureIndex({page: 1, some_id: 1, ga_date: -1}, {unique: true});
Aber ich dachte Mongoid kann das Gleiche tun: http://mongoid.org/docs/indexing/
so habe ich:
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
und machen einen
rake db:create_indexes
aber trotzdem können doppelte Datensätze eingefügt werden?
Update: ist es ziemlich seltsam, aber nachdem ich den Index in der MongoDB Shell und Fallenlassen der Sammlung hinzugefügt und neu erstellt dann den Index entweder in der MongoDB Shell oder Mongoid, jetzt kann ich die Sammlung in MongoDB Schale fallen , und dann rake erstellen Sie den Index, und verwenden Sie Mongoid, um die gleichen Dokumente zweimal hinzuzufügen, und Mongod wird Fehler für doppelten Schlüssel sagen.
welche Version von Mongoid verwenden Sie? –