我设置了一个唯一索引,这样我就不会插入重复的订单,我担心如果我稍后将数据库切换到生产环境,它们可能会通过?我应该这样离开吗?我知道这很愚蠢,因为一旦它第一次运行,索引就存在了。这是一项明智的投资还是会减慢我的代码速度?
db.orders.ensureIndex( { "marker": 1 }, { unique: true } , function(err, val){
db.orders.insert(orders);
});
您只能ensureIndex
注册一次,更多时间将被注册为无操作,因此对于很多设置没有任何区别。
但是,它在您的编码中看起来更整洁(不仅更具可读性),只有ensureIndex()
一次。要补充一点,正如我在上一个关于这个主题的问题(更详细)中回答的那样,如果索引要更改并且您将其支持到分片副本集或以前没有索引的同样复杂的东西(或者如果索引已更改)然后您可以很容易地关闭您的数据库集群。
Instead of relying on ensureIndex as part of the query , why not set for once a unique index on the collection itself. And MongoDB will take care of ensuring uniqueness.
Uniqueness of a field is a design decision and should be enforced at the time of db setup.
Have a separate script for DB setup and run it for configuring the db.