当前位置: 首页 > 文档资料 > FuelPHP 中文文档 >

Mongo_Db 方法 - 类別

优质
小牛编辑
122浏览
2023-12-01

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 物件。(?)

静态
参数
参数类型预设描述
$collectionstring
''
要使用的集合(资料表)。
回传一个来自 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();