5丁目通信(仮称)

とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。

CakePHP でのMongoDB でTRUNCATE TABLEの話し


CakePHPでMongoDBをつなげてテストデータの投入のシェルとかを書いています。

データの投入の前にMongoDBのコレクション(RDBならテーブルかな)の全データクリアをしたいのですが、今まではこのようにTRUNCATEをSQLで呼び出していました。

$this->Model->execute('TRUNCATE TABLE table);

これはMongoDBでは動きません。MongodbSource.phpにはtruncate()というメソッドがりますが、どう呼び出したら動くかわからず、以下のようにしました。

$this->Model->query(array('$eval' => 'db.collection.drop();'));

$evalってなあに? といった状況です。もっといい方法があるかも。

著:山田祥寛
¥3,366 (2024/11/21 16:43時点 | Amazon調べ)
著:松浦 健一郎, 著:司 ゆき
¥2,574 (2024/11/21 16:43時点 | Amazon調べ)
著:谷藤賢一, 著:徳丸浩
¥2,750 (2024/11/21 16:43時点 | Amazon調べ)

“CakePHP でのMongoDB でTRUNCATE TABLEの話し” への2件のフィードバック

  1. cakephperのアバター
    cakephper

    こんにちは、cake mongoの作者です。ご利用いただきありがとうございます。

    cake mongoのデータソースのインスタンスは、Cake2では下記の方法で取得できるので、そこから呼出せます(Postモデルの利用を例に)

    $cakeMongo = $this->Post->getDataSource();
    $cakeMongo->truncate(‘tableName’);

    1. andoのアバター

      教えていただいたコードでもtruncateできました。ありがとうございました。