質問

MongoDBを使用して、PageViewsでログを収集します。

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

上記のコードは、毎日の新しいコレクションを作成します。

上記のコレクションが作成されたときにインデックスを作成できるようにしたいと思います。とにかくこれをすることはありますか?

  1. 従来のRDBMSでは、これはスキーマを通じて達成されます。 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 すべての挿入で、私はあなたの最善の策(パフォーマンスの問題があるコレクションのみを使用するだけではありません)は、たとえば午後11時にCron-jobを毎日実行することです。 。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top