Создание индексов на новые коллекции в MongoDB + PHP

StackOverflow https://stackoverflow.com/questions/3858117

  •  27-09-2019
  •  | 
  •  

Вопрос

Мы используем MongoDB для сбора журналов на страницах.

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

Код выше создает новую коллекцию на каждый день.

Я хотел бы иметь возможность создать индекс на приведенной выше коллекции, когда он создан. Есть какой-либо способ сделать это?

  1. В традиционных RDBMS это достигается через схему. Есть что-нибудь похожее в MongoDB? Можно ли настроить базу данных для создания индексов на новые коллекции?
  2. Если нет, какой лучший способ выполнить это в PHP? Я не хочу звонить обеспечение каждый раз, когда я звоню вставлять
Это было полезно?

Решение

Вы можете предварительно создать их, так как не совсем секрет, какие коллекции вам понадобится :)

Вы могли бы запустить что-то вроде:

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 коллекции, с которыми у вас есть проблемы с производительностью), было бы управление работой CRON каждый день, скажем, 11 вечера, что создает коллекцию / индекс для коллекции, соответствующей предстоящему дню Отказ

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top