Mongo_Db クラス・メソッド

Mongo_Db クラスは、MongoDB データベースとやり取りすることができます。 MySQL のようなデータベースとやり取りが似ている所もありますが、いくつかのはっきりとした違いがあります。

すべてのソートオプション (order by や indexes) は、DESC の意味として、-1、 false、 'desc' または 'DESC' を使用します。 それら以外の値はすべて ASC として扱われます。

instance($name = 'default')

instance メソッドは、新しい Mongo_Db インスタンスを返却します。 設定と使用するデータベースを指定するために $name パラメータを使用してください。

デフォルトでは、 $name'default' が使用されます。そのため、db.php の設定ファイルにデフォルト設定がされている必要があります。 Mongo_Db 設定の詳細はこちらをご参照ください。

静的 はい
パラメータ
パラメータ デフォルト 説明
$collection string
'default'
使用したい設定グループの名前。
返り値 新しい Mongo_Db インスタンス
例外 Mongo_DbException 、指定されたインスタンス名に対応する設定が見つからなかった場合。
// デフォルトグループを取得
$mongodb = \Mongo_Db::instance();

// カスタムグループを取得
$mongodb = \Mongo_Db::instance('my_group');

get($collection = "")

get メソッドは、コレクションの検索結果を返却します。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$collection string
''
コレクション名
返り値 結果の配列を含む stdClass オブジェクト。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

$result = $mongodb->get('users');
foreach($result as $user)
{
	// $user に対して何かをする
}

get_cursor($collection = "")

get_cursor メソッドは、指定したコレクションから MongoDB カーソル を返却します。通常の get() メソッドに対するアドバンテージは、巨大なデータセットを処理する際、一度にすべてロードするのではなく、アクセスごとに都度メモリ上にロードされることです。これは、長い時間かかる処理の際にとても有用です。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$collection string
''
コレクション名
返り値 MongoCursor オブジェクト。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

$result = $mongodb->get_cursor('documents');
foreach($result as $document)
{
	// $document に対して何かをする
}

get_one($collection = "")

get_one メソッドは、コレクションから 1 つの結果を返します。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$collection string
''
コレクション名。
返り値 結果の配列を含んでいる stdClass オブジェクト。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

$user = $mongodb->get_one('users');

get_where($collection = "", $where = array(), $limit = 99999)

get_where メソッドは、コレクションからの結果を返却します。 それに加えて、検索条件を配列で指定することや返却件数を制限することができます。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$collection string
''
コレクション名。
$where array
array()
where ステートメントの配列。
$limit number
99999
取得したいアイテム数。
返り値 結果の配列を含んでいる stdClass オブジェクト。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

// 'active' が "yes" の条件に合致する、最初の 10 件を取得します。
$result = $mongodb->get_where('users', array(
	'active' => 'yes',
), 10);

foreach($result as $user)
{
	// $user に対して何かをする
}

select($includes = array(), $excludes = array())

select メソッドは、クエリにより、どのフィールドの値を取得するか、または除外するかを指定します。

除外配列を使用する場合には、取得配列は空である必要があります。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$includes array
array()
取得したいフィールドの配列
$excludes array
array()
除外したいフィールドの配列
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();
// これらのフィールドを選択
$mongodb->select(array(
	'name',
	'surname',
	'email',
));
$users = $mongodb->get('users');

// または、除外配列を使用する

$mongodb = \Mongo_Db::instance();
// これらのフィールドを選択
$mongodb->select(array(), array(
	'not_this',
	'or_this',
));
$users = $mongodb->get('users');

where($wheres = array())

where メソッドは、'where is equal to' ステートメントをセットします。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$wheres array
array()
キーをフィールド、値を検索条件とした、連想配列。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得。
$mongodb = \Mongo_Db::instance();

$mongodb->where(array(
	'name' => 'John',
	'surname' => 'Doe',
));

$users = $mongodb->get('users');

or_where($wheres = array())

or_where メソッドは、'or where is equal to' ステートメントをセットします。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$wheres array
array()
キーをフィールド、値を検索条件とした連想配列。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();
$mongodb->where(array(
	'name' => 'John',
	'surname' => 'Doe',
))->or_where(array(
	'name' => 'Jim',
));
$users = $mongodb->get('users');

where_in($field = "", $in = array())

where_in メソッドは、'where in' ステートメントをセットします。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$field string
''
クエリとなるフィールド。
$in array
array()
取り得る値の配列。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();
$mongodb->where_in('name', array(
	'John', 'James', 'Frank', 'Dave',
));
$users = $mongodb->get('users');

where_in_all($field = "", $in = array())

where_in_all メソッドは、'all where in' ステートメントをセットします。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$field string
''
クエリとなるフィールド。
$in array
array()
取り得る値の配列。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();
$mongodb->where_in_all('name', array(
	'John', 'James', 'Frank', 'Dave',
));
$users = $mongodb->get('users');

where_not_in($field = "", $in = array())

where_not_in メソッドは、'where not in' ステートメントをセットします。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$field string
''
クエリとなるフィールド。
$in array
array()
取り得る値の配列。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();
$mongodb->where_not_in('name', array(
	'John', 'James', 'Frank', 'Dave',
));
$users = $mongodb->get('users');

where_gt($field = "", $x)

where_gt メソッドは、 'where greater than' ステートメントをセットします。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$field string
''
クエリとなるフィールド。
$x mixed 必須 比較するための値。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();
$mongodb->where_gt('age', 12);
$users = $mongodb->get('users');

where_gte($field = "", $x)

where_gte メソッドは、 'where greater than or equal to' ステートメントをセットします。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$field string
''
クエリとなるフィールド。
$x mixed 必須 比較するための値。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();
$mongodb->where_gte('age', 18);
$users = $mongodb->get('users');

where_lt($field = "", $x)

where_lt メソッドは、 'where lower than' ステートメントをセットします。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$field string
''
クエリとなるフィールド。
$x mixed 必須 比較するための値。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();
$mongodb->where_lt('age', 120);
$users = $mongodb->get('users');

where_lte($field = "", $x)

where_lte メソッドは、 'where lower than or equal to' ステートメントをセットします。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$field string
''
クエリとなるフィールド。
$x mixed 必須 比較するための値。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();
$mongodb->where_lt('age', 120);
$users = $mongodb->get('users');

where_between($field = "", $x, $y)

where_between メソッドは、 'where between' ステートメントをセットします。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$field string
''
クエリとなるフィールド。
$x mixed 必須 比較するための低い値。
$y mixed 必須 比較するための高い値。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();
$mongodb->where_between('age', 10, 20);
$users = $mongodb->get('users');

where_between_ne($field = "", $x, $y)

where_between_ne メソッドは、 'where between and not equal to' ステートメントをセットします。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$field string
''
クエリとなるフィールド。
$x mixed 必須 比較するための低い値。
$y mixed 必須 比較するための高い値。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();
$mongodb->where_between_ne('age', 10, 20);
$users = $mongodb->get('users');

where_ne($field = "", $x)

where_ne メソッドは、'where not equal to' ステートメントをセットします。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$field string
''
クエリとなるフィールド。
$x mixed 必須 比較するための低い値。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();
$mongodb->where_ne('name', 'Allerd');
$users = $mongodb->get('users');

like($field = '', $value = '', $flags = 'i', $disable_start_wildcard = false, $disable_end_wildcard = false)

like メソッドは、'like' ステートメントをセットします。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$field string
''
クエリとなるフィールド。
$value mixed
''
比較するための値。
$flags string
'i'
標準的な正規表現のフラグをセットすることができます:
  • i = 大文字小文字を区別しない
  • m = 複数行
  • x = コメントを含めることができる
  • l = ロケール依存
  • s = dotall モード、 "." は改行を含んだ全てにマッチします
  • u = unicode にマッチする
$disable_start_wildcard bool
false
true がセットされた場合、文字列の先頭がマッチする。
$disable_end_wildcard bool
false
true がセットされた場合、文字列の後尾がマッチする。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

// 'fran' で始まる名前を持つユーザーを探して...
$mongodb->like('name', 'fran', 'im', false, true);
$users = $mongodb->get('users');

order_by($fields = array())

order_by メソッドは、結果の並び順を指定します。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$fields array
array()
ソート順を降順にセットしたい場合、 -1、 FALSE、 'desc' または 'DESC' を指定します。それ以外は 1 (昇順) となります。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();
$mongodb->order_by(array(
	'age' => 'asc',
	'name' => 'desc'

));
$users = $mongodb->get('users');

limit($x = 99999)

limit メソッドは、取得したいアイテム数を指定します。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$x number
99999
取得したいアイテム数。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();
// 年齢が高い順で 10 件取得
$mongodb->order_by(array(
	'age' => 'desc',
))->limit(10);
$users = $mongodb->get('users');

offset($x = 0)

offset メソッドは、スキップするアイテム数をセットします。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$x number
0
スキップしたいアイテム数。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();
// 10 から 15 の行を取得
$mongodb->order_by(array(
	'age' => 'desc',
))->limit(5)->offset(10);
$users = $mongodb->get('users');

count($collection = '', $foundonly = false)

count メソッドは、結果数を返却します。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$collection string
''
使用するコレクション (テーブル) 。
$foundonly boolean
false
true の場合、現在の limit と skip の選択範囲を考慮します。
返り値 行の数。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

// users の全体数を取得。
$num_users = $mongodb->count('users');

insert($collection = '', $insert = array())

insert メソッドは、指定されたコレクションに行を追加します。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$collection string
''
使用するコレクション (テーブル) 。
$insert array
array()
挿入する値
返り値 insert id 、失敗した場合には false
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

// 新しい user を追加する
$insert_id = $mongodb->insert('users', array(
	'name' => 'John',
	'surname' => 'Doe',
	'email' => 'dont.em@ilme.com',
));

update($collection = "", $data = array(), $options = array())

update メソッドは、指定されたコレクションを更新します。

"multiple" オプションを true にセットしないならば、最初にマッチしたレコードのみ更新されます。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$collection string
''
使用するコレクション (テーブル) 。
$data array
array()
新しい値。
$options array
array()
update コマンドに任意で追加のオプション (?) を与えます。
返り値 成功時に true
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

// user を更新
$bool = $mongodb->where(array('id' => $an_id))->update('users', array(
	'name' => 'John',
	'surname' => 'Doe',
	'email' => 'john@doe.com',
));

update_all($collection = "", $data = array())

update_all メソッドは、指定されたコレクションのすべてのレコードを更新します。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$collection string
''
使用するコレクション (テーブル) 。
$data array
array()
新しい値。
返り値 成功時に true
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

// Spammer の surname を更新。
$bool = $mongodb->where('name', 'Spammer')->update_all('users', array(
	'surname' => 'Don\'t believe us.',
));

delete($collection = "")

delete メソッドは、与えられたコレクションの最初のレコードを削除します。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$collection string
''
使用するコレクション (テーブル) 。
返り値 成功時に true
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

// Spammer という名前の user を削除
$bool = $mongodb->where(array('name' => 'Spammer'))->delete('users');

delete_all($collection = "")

delete_all メソッドは、与えられたコレクションのすべてのレコードを削除します。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$collection string
''
使用するコレクション (テーブル) 。
返り値 成功時に true
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

// Spammer という名前の全ての user を削除
$bool = $mongodb->where(array('name' => 'Spammer'))->delete_all('users');

command($query = array())

command メソッドは、MongoDB コマンドを実行します。コマンドについての詳細は、 the MongoDB docs をご参照ください。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$query array
array()
command パラメータの配列。
返り値 command の結果
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

$mongodb->command(array(
	'geoNear' => 'buildings',
	'near' => array(53.228482, -0.547847),
	'num' => 10,
	'nearSphere' => true
));

add_index($collection = "", $keys = array(), $options = array())

add_index メソッドは、任意のパラメーターと共に、コレクションにキーのインデックスを追加します。 指定可能なオプションについては、 php.net をご覧ください。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$collection string
''
使用するコレクション (テーブル) 。
$keys array
array()
フィールドとソート方向の連想配列。
$options array
array()
オプション設定の配列。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

$mongodb->add_index('my_collection', array(
	'first_name' => 'ASC',
	'last_name' => -1)
, array(
	'unique' => true
));

remove_index($collection = "", $keys = array())

remove_index メソッドは、コレクションから 1 つ以上のインデックスを削除します。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$collection string
''
使用するコレクション (テーブル) 。
$keys array
array()
フィールド (とソート方向) の連想配列。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

$mongodb->remove_index('my_collection', array(
	'first_name' => 'ASC',
	'last_name' => -1)
));

// または

$mongodb->remove_index('first_name');

remove_all_indexes($collection = "")

remove_all_indexes メソッドは、コレクションのすべてのインデックスを削除します。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$collection string
''
使用するコレクション (テーブル) 。
返り値 現在の Mongo_Db インスタンス。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

$mongodb->remove_all_indexes('my_collection');

list_indexes($collection = "")

list_indexes メソッドは、インデックス名を配列で返却します。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$collection string
''
使用するコレクション (テーブル) 。
返り値 コレクションのインデックス名の配列。
// インスタンスを取得
$mongodb = \Mongo_Db::instance();

$indexes = $mongodb->list_indexes('my_collection');

get_collection($collection = "")

get_collection メソッドは、MongoDB PHP ドライバから、MongoCollection オブジェクトを返却します。(?)

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$collection string
''
使用するコレクション (テーブル) 。
返り値 MongoDB PHP ドライバからの MongoCollection オブジェクト。
// コレクションを取得
$mongodb       = \Mongo_Db::instance();
$my_collection = $mongodb->get_collection('my_collection');
$my_collection->update(array('_id' => $id), array('$push' => array('array.to.add.to' => $data)));

これは、update の modifier オペレーション のサポートが手薄いことから導入されました。

list_collections($system_collections = false)

list_collections メソッドは、データベース内に存在するすべてのコレクションの MongoCollection オブジェクトの配列を返します。必要に応じてすべてのシステムのコレクションもまた返すように指定できます。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
system_collections bool
false
システムのコレクションを含めるかどうか。
戻り値 MongoCollection オブジェクトの配列。
// mongo インスタンスを取得
$mongodb     = \Mongo_Db::instance();
$collections = $mongodb->list_collections();

dump($collection_name = null, $path = null)

The dump method allows you to dump one or more collections to a file, in json format.

Static No
Parameters
Param Type Default Description
collection_name mixed
null
A single string to specify a collection, an array of strings to specify multiple collections, or null for all collections.
path string
null
Path to write the dump to. If not given, the dump will be made to APPPATH."tmp/mongo-YYYYMMDD".
Returns Bool, true.
Throws InvalidPathException, if the file can not be written to the path given
FileAccessException, if there is no permission to write the file
Example
// Get a mongo instance
$mongodb = \Mongo_Db::instance();

// dump all collections to APPPATH.'tmp'
$mongodb->dump();