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形式上有所不同。