我应该在每个插页上确保索引吗?

时间:2013-07-25 16:27:37

标签: node.js mongodb indexing

我设置了一个唯一的索引,这样我就不会插入重复的订单了,如果我稍后将数据库切换到生产状态,我担心它们可能会通过?我应该这样离开吗?我知道这是愚蠢的,因为一旦它第一次运行索引就存在了。这是一项明智的投资还是会减慢我的代码?

db.orders.ensureIndex( { "marker": 1 }, { unique: true } , function(err, val){
    db.orders.insert(orders);
});

2 个答案:

答案 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.