我们使用MongoDB收集网页浏览日志。
$collection_name = "logs.".date('Y').".".date('m').".".date('d');
$collection = $this->Mongo->$collection_name;
$collection->insert($pageview);
上面的代码每天都会创建一个新的集合。
我希望能够在创建上面的集合时创建索引。反正有吗?
答案 0 :(得分:4)
为了避免在每次插入时调用ensureIndex
我认为你最好的选择(除了只使用一个你遇到性能问题的系列)就是每天运行一个cron-job,比如说,晚上11点创建与即将到来的一天相对应的集合的集合/索引。
答案 1 :(得分:3)
您可以预先创建它们,因为您需要的集合并不完全是秘密:)
你可以运行类似的东西:
for ($month = 0; $month < 12; $month++) {
for ($day = 0; $day < 31, $day++) {
$c = $db->getCollection("logs.2010.$month.$day");
$c->ensureIndex(array("foo" => 1));
}
}
如果该集合尚不存在, ensureIndex
将创建该集合。