我们使用解如收集登录网页浏览量.

$collection_name = "logs.".date('Y').".".date('m').".".date('d');
$collection = $this->Mongo->$collection_name;
$collection->insert($pageview);

代码以上创建一个新的收集对于每一天。

我希望能够创造一种索引,上述集合时,它创建的。反正是有这样做吗?

  1. 在一个传统的关系型数据库,这是通过方案。是否有任何类似的东西在MongoDB?是否有可能配置的数据库建立索引新集合?
  2. 如果不是,什么是最好的方式完成这在PHP?我不想叫 ensureIndex 每次我打电话 插入
有帮助吗?

解决方案

你可以前创建的,因为它不是一个秘密的什么收藏品你会需要:)

你可以跑的东西,如:

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 将会创造的收集,如果它不能已经存在。

其他提示

为了避免叫 ensureIndex 在每一插入我认为你最好的选择,(除了使用只有1集合有效的问题)是运行计划的工作每天都在说,晚上11点创造的收集/指数,用于收集对应即将到来的一天。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top