您的位置:首页 > 数据库 > Mongodb

PHP操作MongoDB

2017-10-15 16:18 429 查看

PHP连接MongoDB

$connection = new Mongo();

// 负载均衡
$conn = new Mongo('localhost', array('replicaSet' => true));

// 持久连接
$conn = new Mongo('localhost', array('persist' => 't'));

// 带用户名和密码
$conn = new Mongo('mongodb://root:123@localhost');


选择数据库 和 集合

// 选择数据库
$db = $connection->mydata;

// 选择集合
$collection = $db->user;
// 选择集合的另一种方式
$collection = $db->selectCollection('user');

// 简洁写法
$collection = $db->mydata->user;


添加数据

简单新增

/**
* $collection->insert() ) ^.^ --->
* insert($array[, $arr = array(
*  'safe' => false,
*  'fsync' => false,
*  'timeout' => 10000,
* )])
* @param array $array 添加数据信息
* @param $arr 额外参数信息( 可选 )
*        $arr['safe']    boolean 是否安全写入(false)
*        $arr['fsync']    boolean 是否强制插入到同步磁盘(false)
*        $arr['timeout'] int        超时间( 毫秒 )
*/

// 简单新增 , 返回布尔值 bool(true)
$result = $collection->insert(array(
'username' => 'myCeshi',
'age' => 12,
'time' => time(),
'skills' => array('php', 'javascript', 'css', 'html'),
));


向集合中安全插入数据,返回插入状态(数组)

// 用于等待MongoDB完成操作,以便确定是否成功(当有大量记录插入时使用该参数会比较有用)
$result = $collection->insert(array(
'username' => 'liujx',
'age' => 22,
);, true);

/**
return array(
'connectionId' => int 10
'n' => int 0
'syncMillis' => int 0
'writtenTo' => null
'err' => null
'ok' => float 1
) ;
*/


更新数据

/**
* update(
array $criteria,
array $new[,
array $options = array()
]
)
* @param    array $criteria 查询修改对象数组
* @param    array $new 修改成的新对象数组
* @param    array $options 更新的其他设置数组
* @return    boolean 返回布尔值
*
* 更新数据说明
* $inc    自增
* $set    修改
* $unset    删除字段
*/


修改更新

// 修改一条
$result = $collection->update(
array(
'username' => 'myCeshi'
),
array(
'$set' => array(
'username' => 'myTitle',
'name' => 'xiaoTitle'
)
)
);


替换更新

// 替换一条
$result = $collection->update(
array(
'username' => 'myCeshi'
),
array(
'myname' => '123',
'title' => 'nonoe'
)
);


批量更新

$update = array();
$result = $collection->update(
array(
'username' => 'myCeshi'
),
array(
'$set' => array(
'myname' => '123',
'title' => 'nonoe'
)
),
array(
'multiple' => true
)
);


自动累加

// age累加5( 修改一条 )
$result = $collection->update(
array(
'username' => 'myTitle'
),
array(
'$inc' => array(
'age' => 5
)
)
);


删除数据 remove()

删除指定数据

$result = $collection->remove(array(
'username' => 'myTitle'
));


清空集合

$collection->remove();


删除指定的MongoId

$id = new MongoId('557016db90428ba817000012');
$result = $collection->remove(array('_id' => $id));


查询数据 find() 和 findOne()

查询数据数目 count()

$num = $collection->count();

// 查询满足条件的数据
$num = $collection->count(array(
'username' => 'liujx'
));

// 查询满足条件数据条数
$num = $collection->count(array(
'age' => array(
'$gt' => 12,
'$lt' => 30
)
));


$gt为大于

$gte为大于等于

$lt为小于

$lte为小于等于

$ne为不等于

$exists不存在

findOne() 查询一条数据

/**
* findOne() 查询一条数据
* @param    array $criteria 查询条件数组
* @re
a60b
turn    array    返回数组( 没有数据返回 null )
*/
$data = $collection->findOne();
$data = $collection->findOne(array(
'username' => 'liujx'
));


find() 查询数据

/**
* find() 查询数据
* @param    array $criteria 查询条件数组
* @return  object    返回对象( 没有返回 null )
* 注意:
* 在我们做了find()操作,获得$cursor游标之后,这个游标还是动态的.
* 换句话说,在我find()之后,到我的游标循环完成这段时间,如果再有符合条件的记录被插入到collection,那么这些记录也会被$cursor 获得.
* 如果你想在获得$cursor之后的结果集不变化,需要这样做:
* $cursor = $collection->find();
* $cursor->snapshot();
*/
$data = $collection->find();                        // 查询所有数据,返回对象
foreach ($data as $key => $value) {
// var_dump($value);
}


限制查询条数limit()

$data = $collection->find()->limit(5);


确定查询开始位置skip()

$data = $collection->find()->limit(10)->skip(5);


排序条件查询sort()

$data = $collection->find()->limit(10)->sort(array('_id' => -1));
// $data = $data->snapshot() ;                     # 排序和snapshot();


指定查询的列 fields() true 显示 false 不显示

$data = $collection->find()->limit(10)->fields(array('_id' => false));    // _id 列不显示
// $data = $collection->find()->limit(10)->sort(array('_id' => -1 ))->fields(array('username'=> true)) ; # 只显示username(_id默认显示)


索引操作 ensureIndex()

/**
* ensureIndex(
array(),
array(
'name' =>'索引名称',
'background' => true ,
'unique' => true
)
)
* 详见:http://www.php.net/manual/en/mongocollection.ensureindex.php
*/

// 表示降序 -1表示升序
$collection->ensureIndex(array(
'age' => 1,
'type' => -1
));

// 索引的创建放在后台运行(默认是同步运行)
$collection->ensureIndex(
array(
'age' => 1,
'type' => -1
),
array(
'background' => true
)
);

// 该索引是唯一的
$collection->ensureIndex(
array(
'age' => 1,
'type' => -1
),
array(
'unique' => true
)
);


关闭连接 close()

$connection->close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: