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

PHP7/5中 MongoDB的正则匹配操作

2017-04-25 21:17 281 查看
PHP5和PHP7对MongoDB 的扩展是不一样的! 即使熟练mongodb的shelll命令查找数据,也不一定会用PHP操作MongoDB。形式上有些差异。

如下是几个参考文档链接。

- MongoDB官网PHP7示例: https://docs.mongodb.com/php-library/master/tutorial/crud/

- PHP官网PHP7 MongoDB 扩展说明文档:http://php.net/manual/zh/book.bson.php

- PHP官网PHP5 MongoDB 扩展说明文档:http://php.net/manual/zh/class.mongoclient.php

一、PHP7 操作MongoDB

1.以下操作中包含对字段进行正则查询!网上少见。

//new 一个Client 并选择数据库和集合
$collection = new \MongoDB\Client("mongodb://用户:密码@dmongodb地址/"))->selectDatabase('your_database')->selectCollection('your_collection');
$searchKey = "mike";
$query = [];
//字段'$regex'的值为正则表达式。
$query ['name'] = [
'$regex' => '.*'. $searchKey . '.*',
'$options' => 'i'
];
//查询设置。skip和limit可用来做分页,意义与muysql中一致。
$options       = [
'skip'=>8,
'limit'=>10,
'sort'=>['_id'=> -1]
];
$cursor = $collection->find($query,$options);


以上语句将会在数据库 your_database 中的 your_collection 集合查找:”name” 字段中包含有“mike”字符的数据,并且按照字段“_id”倒序,跳过前8条,获取10条数据。注意!$cursor是一个游标。

二、PHP5中使用正则查询

$collection  = new MongoClient("mongodb://用户:密码@mongodb地址")->selectDB("data")->selectCollection("collection");
$query        = [];
//new MongoRegex类时传入参数为正则表达式
$query['$or'] = [
['name'=>new MongoRegex("/.*".jack.".*/i")],
['info'=>new MongoRegex("/.*".jane.".*/i")],
];
$cursor  = $collection->find($query)->sort(['_id'=>-1])->skip(8)->limit(10);


在数据库data的collection集合中查找 “name”字段包含有jack或者“info”字段包含有jane的数据,咱以“_id”字段降序,跳过前8条取10条。由此可见P7和P5中使用MongoDB形式上有所不同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php mongodb