1安装MongoDB驱动为php
sudo pecl install mongodb
添加extension=mongodb.so到php.ini
2.然后使用 Composer 安装 ThinkPHP5.0 的 MongoDb 驱动:
composer require topthink/think-mongo
修改你的数据库配置文件 database.php 中的 type 参数为:
'type' => '\think\mongo\Connection',
接下来可以使用 Db 类直接操作 MongoDb 了,例如:
Db::name('demo')
->find();
Db::name('demo')
->field('id,name')
->limit(10)
->order('id','desc')
->select();
TP5操作mongo
1.增加
Db::name('demo')->insert([]);
2.删除
Db::name('demo')->where([])->delete();
3.更新
Db::name('demo')->where([])->update([]);
4.查看
Db::name('demo')->where([])->select();
设置'pk_convert_id' => true, 在database.php 强制_id为id
5.字段值是数组查询比较查询数组值
Db::name('demo')->where(['peopleIds.0'=>'18511834487'])->select();
peopleIds是一个数组, 查询数组第一个元素==18511834487的字段
{
"storeId": 171,
"position": "ss",
"deviceNum": "ss",
"deviceName": "ss",
"people": "168",
"datetime": "2018-09-20 11:49",
"content": "ss",
"imgs": [],
"peopleIds": [
"18511834487",
"18612784512"
],
"state": "未领取",
"receiverPeople": "",
"id": "5ba318e738990a1b832e1de5"
}
Db::name('demo')->where(['peopleIds'=>'18511834487'])->select();
查看peopleIds包含18511834487的记录
查询qList.qid==1的记录
Db::name('demo')->where(['qList.qid'=>1])->select();
{
"_id" : "123",
"name" : "人文医学",
"qList" : [
{
"qid" : 1,
"content" : "医学伦理学的公正原则",
"reorderFlag" : 1
},
{
"qid" : 2,
"content" : "制定有关人体实验的基本原则",
"reorderFlag" : 0
}
]
}
6.正则表达式使用联合查询
$orders = General::mongo('malfunction')
->where(function ($query) {
$query->whereOr(['peopleIds'=>cookie("phone"), 'people'=>cookie("userId")]);
})
->where('datetime', 'like', '.*'.$dateTime.'.*')
->where('deviceNum|deviceName', 'like', '.*'.$keyword.'.*')
->where('state', 'like', '.*'.$state.'.*')
->limit(($currentPage - 1)* $pageSize, $pageSize* $currentPage)
->select();