合肥列举网 > 商务服务 > 物流/货运 > 开源IT学习教育培训
合肥
[切换城市]

开源IT学习教育培训

更新时间:2015-09-07 13:29:14 浏览次数:102次
区域: 合肥 > 蜀山 > 南七里站
类别:国内物流
地址:立基大厦
www.kno***  

一、连接数据库主机
连接本地主机,端口为27017:
$connection = new Mongo();

连接远程主机,端口为默认端口:
$connection= new Mongo( "192.168.2.1" );

连接远程主机,端口为指定端口:
$connection = new Mongo( "192.168.2.1:65432" );

选择数据库,如果指定的数据库不存在,则会自动创建一个新的数据库,有2种方法:
$db = $connection->selectDB('dbname');

$db = $connection->dbname;

选择集合(collection),与使用关系型数据库中的表类似,有2种方法:
$collection = $db->selectCollection('people');

$collection = $db->people;

二、插入新文档(document)
collection对象用来执行信息管理,例如,想存储一个关于某人的信息,可以如下编码:
$person = array(
'name' => 'Cesar Rodas',
'email' => 'crodas@ph***',
'address' => array(
array(
  'country' => 'PY',
  'zip' => '2160',
  'address1' => 'foo bar'
),
array(
  'country' => 'PY',
  'zip' => '2161',
  'address1' => 'foo bar bar foo'
),
),
'sessions' => 0,
);

$safe_insert = true;
$collection->insert($person, $safe_insert);
$person_identifier = $person['_id'];

其中:
$safe_insert参数用于等待MongoDB完成操作,以便确定是否成功,默认值为false,当有大量记录插入时使用该参数会比较有用。
插入新文档后,MongoDB会返回一个记录标识。

三、更新文档
例如,更新上面已经创建的个人信息,增加sessions属性值,在第1个address处增加address2属性,删除第2个address,代码如下:
首先,定义一个filter(过滤器)告诉MongoDB要更新一个指定的文档
$filter = array('email' => 'crodas@ph***');
$new_document = array(
'$inc' => array('sessions' => 1),
'$set' => array(
  'address.0.address2' => 'Some foobar street',
),
'$unset' => array('address.1' => 1),
);
$options['multiple'] = false;
$collection->update(
$filter,
$new_document,
$options
);

MongoDB也支持批量更新,与关系型数据库类似,可以更新给定条件的所有文档,如果想这么做的话,就需要设置options的multiple的值为true.

四、查询文档
定义一个符合给定标准的条件过滤器,通过使用查询选择器来获取文档。
例,通过e-mail address来获取信息:
$filter = array('email' => 'crodas@ph***');
$cursor = $collection->find($filter);
foreach ($cursor as $user)
{
var_dump($user);
}

例,获取sessions大于10的信息:
$filter = array('sessions' => array('$gt' => 10));
$cursor = $collection->find($filter);

例,获取没有设置sessions属性的信息:
$filter = array(
'sessions' => array('$exists' => false)
);
$cursor = $collection->find($filter);

例,获取地址在PY并且sessions大于15的信息:
$filter = array(
'ad***untry' => 'PY',
'sessions' => array('$gt' => 10)
);
$cursor = $collection->find($filter);

有一个重要的细节需要注意,只有当需要结果的时候查询才会被执行,在第1个例子中,当foreach循环开始时,查询才被执行。
这是个很有用的特性,因为这可以通过在游标(cursor)中增加选项来取回结果,恰好在定义查询后,执行查询前这个时刻。例如,可以设置选项来执行分页,或者获取指定数目的匹配的文档。
$total = $cursor->total();
$cursor->limit(20)->skip(40);
foreach($cursor as $user) {
}

www.kno***  
合肥物流/货运相关信息
叉车证在哪里考
庐阳-庐阳周边
3月26日
注册时间:2015年08月29日
UID:235243
---------- 认证信息 ----------

查看用户主页