Mongo_Db 类別方法

Mongo_Db 类別能让你與 MongoDB 資料庫互动。雖然在某些情況下, 它與資料庫如 MySQL 的互动类似,也有一些明顯的差異。

所有排序選項(order by 及 indexes)使用 -1、false、'desc' 或 'DESC' 做为 DESC。任何其他值会是 ASC

instance($name = 'default')

instance 回傳一个新的 Mongo_Db 實例。使用 $name 參数來指定要使用的配置和資料庫。

預設情況下,$name'default',它需要你有一个在你 db.php 配置档案中的預設配置。閱讀關於更多 Mongo_Db 配置。

靜態
參数
參数 类型 預設 描述
$collection 字串
'default'
要使用的配置群組的名稱。
回傳 一个新的 Mongo_Db 實例
拋出 Mongo_DbException,當沒找到所給實例名稱的配置時。
範例
// 取得預設群組
$mongodb = \Mongo_Db::instance();

// 取得一个自訂群組
$mongodb = \Mongo_Db::instance('my_group');

get($collection = "")

get 方法從一个集合回傳結果。

靜態
參数
參数 类型 預設 描述
$collection 字串
''
集合名稱。
回傳 一个包含結果陣列的 stdClass 物件。
範例
// 取得一个實例
$mongodb = \Mongo_Db::instance();

$result = $mongodb->get('users');
foreach($result as $user)
{
	// 用 $user 做一些事
}

get_cursor($collection = "")

get_cursor 方法回傳指定集合的 mongodb 游标。它提供了比一般 get() 方法更好的地方是,當处理大型資料集做为文件時,一次只会載入它們存取的進入記憶體而不是一次全部。對長時間执行的程序非常有用。

靜態
參数
參数 类型 預設 描述
$collection 字串
''
集合名稱。
回傳 一个 MongoCursor 物件。
範例
// 取得一个實例
$mongodb = \Mongo_Db::instance();

$result = $mongodb->get_cursor('documents');
foreach($result as $document)
{
	// 對 $document 做點什么
}

get_one($collection = "")

get_one 方法從一个集合回傳一个結果。

靜態
參数
參数 类型 預設 描述
$collection 字串
''
集合名稱。
回傳 一个包含单一結果陣列的 stdClass 物件。
範例
// 取得一个實例
$mongodb = \Mongo_Db::instance();

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

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

get_where 方法回傳來自集合的結果。另外, 你還可以提供一个調節結果以及提供限制的陣列。

靜態
參数
參数 类型 預設 描述
$collection 字串
''
集合名稱。
$where 陣列
array()
一个 where 語句的陣列。
回傳 一个包含結果陣列的 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 方法設定在查詢過程中要包含或排除哪些欄位。

为了使用 excludes 陣列,includes 陣列必須为空。

靜態
參数
參数 类型 預設 描述
$includes 陣列
array()
要包含的欄位陣列
$where 陣列
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()
有欄位做为鍵以及值做为搜尋准則的關聯陣列的陣列。
回傳 目前 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()
有欄位做为鍵以及值做为搜尋准則的關聯陣列的陣列。
回傳 目前 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 字串
''
給查詢的欄位。
$in 陣列
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 字串
''
給查詢的欄位。
$in 陣列
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 字串
''
給查詢的欄位。
$in 陣列
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 字串
''
給查詢的欄位。
$x 混合 必要 要比較的值。
回傳 目前 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 字串
''
給查詢的欄位。
$x 混合 必要 要比較的值。
回傳 目前 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 字串
''
給查詢的欄位。
$x 混合 必要 要比較的值。
回傳 目前 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 字串
''
給查詢的欄位。
$x 混合 必要 要比較的值。
回傳 目前 Mongo_Db 實例。
範例
// 取得一个實例
$mongodb = \Mongo_Db::instance();
$mongodb->where_lt('age', 120);
$users = $mongodb->get('users');

where_between($field = "", $x)

where_between 方法設定 'where between' 語句。

靜態
參数
參数 类型 預設 描述
$field 字串
''
給查詢的欄位。
$x 混合 必要 要比較的低值。
$y 混合 必要 要比較的高值。
回傳 目前 Mongo_Db 實例。
範例
// 取得一个實例
$mongodb = \Mongo_Db::instance();
$mongodb->where_between('age', 10, 20);
$users = $mongodb->get('users');

where_between_ne($field = "", $x)

where_between_ne 方法設定 'where between and not equal to' 語句。

靜態
參数
參数 类型 預設 描述
$field 字串
''
給查詢的欄位。
$x 混合 必要 要比較的低值。
$y 混合 必要 要比較的高值。
回傳 目前 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 字串
''
給查詢的欄位。
$x 混合 必要 要比較的低值。
回傳 目前 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 字串
''
給查詢的欄位。
$value 混合
''
要比較的值。
$flags 字串
'i'
能让你設定典型的正則表達式标誌:
  • i = 不區分大小寫
  • m = 多行
  • x = 可以包含註解
  • l = 語言环境
  • s = DOTALL,"." 符合任何字符,包括換行符
  • u = 符合 unicode
$disable_start_wildcard 布林
false
當設为 false 字串開頭必須符合。
$disable_end_wildcard 布林
false
當設为 false 字串結尾必須符合。
回傳 目前 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()
要設定值是降序排列,你必序傳遞值是 -1、FALSE、'desc' 或 'DESC',否則都会被設为 1(ASC)。
回傳 目前 Mongo_Db 實例。
範例
// 取得一个實例
$mongodb = \Mongo_Db::instance();
$mongodb->order_by(array(
	'age' => 'asc',
	'name' => 'desc'

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

limit($x = 99999)

limit 方法限制取回的筆数。

靜態
參数
參数 类型 預設 描述
$x 数字
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 数字
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 字串
''
要使用的集合(資料表)。
$foundonly 布林
false
如果为 true,它会将目前限制以及略過選擇列入考慮。
回傳 筆数。
範例
// 取得一个實例
$mongodb = \Mongo_Db::instance();

// 取得使用者数量。
$num_users = $mongodb->count('users');

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

insert 方法新增一列到所給集合。

靜態
參数
參数 类型 預設 描述
$collection 字串
''
要使用的集合(資料表)。
$insert 陣列
array()
要新增的值
回傳 新增的 ID,或 false 在失敗時。
範例
// 取得一个實例
$mongodb = \Mongo_Db::instance();

// 新增一个新的使用者
$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 字串
''
要使用的集合(資料表)。
$data 陣列
array()
新的值。
$options 陣列
array()
提供選擇性的額外選項 (?) 到更新命令。
回傳 true 在成功時
範例
// 取得一个實例
$mongodb = \Mongo_Db::instance();

// 更新一个使用者
$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 字串
''
要使用的集合(資料表)。
$data 陣列
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 字串
''
要使用的集合(資料表)。
回傳 true 在成功時
範例
// 取得一个實例
$mongodb = \Mongo_Db::instance();

// 刪除一个名为 Spammer 的使用者
$bool = $mongodb->where(array('name' => 'Spammer'))->delete('users');

delete_all($collection = "")

delete_all 方法在一个所給的集合中刪除所有紀錄。

靜態
參数
參数 类型 預設 描述
$collection 字串
''
要使用的集合(資料表)。
回傳 true 在成功時
範例
// 取得一个實例
$mongodb = \Mongo_Db::instance();

// 刪除所有名为 Spammer 的使用者
$bool = $mongodb->where(array('name' => 'Spammer'))->delete_all('users');

command($query = array())

command 方法运行一个 MongoDB 命令。 在 MongoDB 文件尋找更多關於命令。

靜態
參数
參数 类型 預設 描述
$query 陣列
array()
一个命令參数的陣列。
回傳 命令結果
範例
// 取得一个實例
$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 字串
''
要使用的集合(資料表)。
$keys 陣列
array()
有欄位及排序方向的關聯陣列。
$options 陣列
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 方法從集合移除一个或更多索引。

靜態
參数
參数 类型 預設 描述
$collection 字串
''
要使用的集合(資料表)。
$keys 陣列
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 字串
''
要使用的集合(資料表)。
回傳 目前 Mongo_Db 實例。
範例
// 取得一个實例
$mongodb = \Mongo_Db::instance();

$mongodb->remove_all_indexes('my_collection');

list_indexes($collection = "")

list_indexes 方法回傳一个給此集合的索引名稱的陣列。

靜態
參数
參数 类型 預設 描述
$collection 字串
''
要使用的集合(資料表)。
回傳 給此集合的索引名稱的陣列。
範例
// 取得一个實例
$mongodb = \Mongo_Db::instance();

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

get_collection($collection = "")

get_collection 方法回傳一个來自 MongoDB PHP Driver 核心的 MongoCollection 物件。(?)

靜態
參数
參数 类型 預設 描述
$collection string
''
要使用的集合(資料表)。
回傳 一个來自 MongoDB PHP Driver 核心的 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 operation 支援。

list_collections($system_collections = false)

list_collections 方法回傳一个所有存在於資料庫集合的 MongoCollection 物件陣列。你也可以選擇性的指定你想要回傳所有系统集合。

靜態
參数
參数 类型 預設 描述
system_collections 布林
false
是否包含系统集合。
回傳 一个 MongoCollection 物件的陣列。
範例
// 取得一个 mongo 實例
$mongodb     = \Mongo_Db::instance();
$collections = $mongodb->list_collections();