我设置了一个唯一的索引,这样我就不会插入重复的订单了,如果我稍后将数据库切换到生产状态,我担心它们可能会通过?我应该这样离开吗?我知道这是愚蠢的,因为一旦它第一次运行索引就存在了。这是一项明智的投资还是会减慢我的代码?
db.orders.ensureIndex( { "marker": 1 }, { unique: true } , function(err, val){
db.orders.insert(orders);
});
答案 0 :(得分:1)
您只能ensureIndex
一次,其他时间将被注册为无操作,因此对于很多设置没有任何区别。
但是,您的编码(不仅更具可读性)只有ensureIndex()
一次,看起来更整洁。要添加,正如我在上一个关于此主题的问题(更详细)中回答的那样,如果索引要更改并且您将其备份到分片副本集上,或者某些事情就像以前没有索引那样复杂(或者如果索引已经改变了)然后你可以很容易地把数据库集群搞定。
答案 1 :(得分:0)
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.