我想始终确保我的馆藏被编入索引,并且我会在半定期的基础上添加和删除它们.
假设我在每次Web请求时都与DB建立了新连接,那么每次连接时都可以执行一些db.collection.ensureIndex({field:true})语句吗?
据我了解,MongoDB只是简单地查询系统Collection,以便在创建索引之前查看索引是否存在...
http://www.mongodb.org/display/DOCS/Indexes#Indexes-AdditionalNotesonIndexes
> db.system.indexes.find();
Run Code Online (Sandbox Code Playgroud)
您可以运行getIndexes()来查看Collection的索引
> db.things.getIndexes();
Run Code Online (Sandbox Code Playgroud)
所以,你只需添加一个查询; 它不会重建它或做任何其他不明显的事情.
也就是说,我认为这不是一个特别好的主意.它会增加不必要的开销,更糟糕的是可能会在创建索引时锁定数据库...因为默认情况下创建索引会阻塞数据库(除非你在后台运行它),如下所示:
> db.things.ensureIndex({x:1}, {background:true});
Run Code Online (Sandbox Code Playgroud)
不过请注意......
...后台模式构建使用增量方法来构建比默认前台模式慢的索引:构建索引的时间会更长.
我认为,当您添加集合而不是每次连接到数据库时,在代码中执行此操作会更好.无论如何你为什么要添加和删除它们?
| 归档时间: |
|
| 查看次数: |
1859 次 |
| 最近记录: |