MongoDb 基本操作(PHP)

MongoDb基本操作(PHP)


用mongo的话需要开启php中的mongo扩展(此处比较坑)。

开启php的mongo扩展后就可以使用new Mongo()来创建一个实例。

在tp5中创建一个mongo的实例:

配置文件中的内容:

"mongo" => "mongodb://用户名:密码@ip地址:27017/db"

连接数据库方法

public function mongoConnect(){
        $connect = new \MongoClient(config("mongo"));
        $db = $connect->db;
        return $db;
    }

##1、查询操作 ##


###查询条件:

(1) 单条件

(object)array("name" => "stephen");
where "name" = "stephen"

(2) 多条件

(object)array("name" => "stephen","age" => "23");
where "name" = "stephen" and "age" = "23"

这里的“23”和 23 有区别的,需要注意类型,mongo是不会像mysql会自动转换类型。

(3) 比较操作符:$lt(小于)$lte(小于等于)$gt(大于)$gte(大于等于)$ne(不等于)

(object)array("age" => array('$gte' => 18, '$lte' => 40));
where "age" >= 18 and "age" <= 40

(4) in操作符:$in

(object)array("name" => array('$in' => array("stephen", "tim")));
where "name" in ("stephen", "tim")

array(‘stephen’,‘tim’)这里可以是不同类型。

not in操作符:$nin

(object)array("name" => array('$nin' => array("stephen", "tim")));

相当于不等于

where "name" not in ("stephen", "tim") 

(5)或者操作符:$or

(object)array('$or' => array((object)array("name" => "stephen"),(object)array("age" => 23)));
where "name" = "stephen" or "age" = 23

(6)不等于操作符:$not

(object)array("name" => array('$not' => (object)array('$in' => array("stephen", "tim"))));
where "name" <> "stephen" or "name" <> "tim"

###查询数据
查询得到一条数据

$mongo = $this->mongoConnect();
$result = $mongo->tableName->findOne();

根据条件查询得到一条数据

$condition = array('name'=>'stephen');
$mongo = $this->mongoConnect();
$result = $mongo->tableName->findOne($condition);

根据条件查询得到一组数据

$condition = array('name'=>'stephen');
$mongo = $this->mongoConnect();
$result = $mongo->tableName->find($condition);

这时候得到的结果是:object(MongoCursor)#72 (0) {}

注意:当使用findOne时可以直接得到一个一维数组的结果,但是使用find时候,必须将结果进行转换后才能够获取到内容,转换方式如下

iterator_to_array($result);

如果find中只填入条件的话将会把所有的字段查询出来。

还可以填入fields字段进行对字段的筛选:

$fields =  array('_id'=>0,'name'=>1,'age'=>1);
$result = $mongo->tableName->find($condition,$fields);

$fields中的1表示显示,0表示不显示,或者可以说1表示选择,0表示不选择。
上面的结果就是显示name和age字段,不显示_id字段。

保存操作

$data = array('name'=>'stephen');
$mongo = $this->mongoConnect();
$result = $mongo->tableName->save($data);

修改操作

$id = array('_id'=>'123');
$data = array('name'=>'stephen');
$updateData = array('$set'=>(object)$data)
$mongo = $this->mongoConnect();
$result = $mongo->tableName->update($id, $data);

将_id为123的name设置成为stephen.

$id = array('_id'=>'123');
$data = array('name'=>'stephen');
$unsetData = array('age'=>'');
$updateData = array('$set'=>(object)$data, '$unset'=>(object)$unsetData)
$mongo = $this->mongoConnect();
$result = $mongo->tableName->update($id, $data);

将_id为123的name设置成为stephen,并删除age字段。

删除操作

$id = array('_id'=>'123');
$mongo = $this->mongoConnect();
$result = $mongo->tableName->remove($id);

删除_id为123的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stephen_112

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值