我的mongoDb之旅(一)
开发环境
php版本:7.0.10
mongodb版本:1.5
开发框架:tp5
数据库工具:navicat12formongodb
可以参考的外部文件链接
tp5中mongodb的扩展说明:https://www.kancloud.cn/manual/thinkphp5_1/354135
一、 与mysql的不同之处
1、集合相当于是表的性质,但是没有字段的维度
2、在mongodb中,字段名是根据插入数据时的KEY自动生成,不需要提前建好
3、在mongodb中,一条文档指是就是一条纪录
二、mongodb操作心得
1、创建集合
2、操作文档
(1)新增文档
php代码:
public function addUser() // 控制器测试文件下的方法
{
$user_model = model('User');
$data = array(
'name'=>uniqid(time(),1),
'age'=>rand(0,2),
'time'=>time(),
);
$user_model->addUser($data);
}
/**
* 添加用户
* @param type $data
* @return type
*/
public function addUser($data) // 模型文件
{
return db('user')->insert($data);
}
工具视图:
_id是自动生成的自增长ID
(2)查询单条文档
public function getUserIofo(){ // 控制器测试文件下的方法
$user_model = model('User');
$id = '5d91a751a374a412e800074a';
$where = array('_id'=>$id);
$info = $user_model->getUserIofo($where);
var_dump($info);die;
}
/**
* 根据条件查询单条文档
* @param $condition
* @return array|false|\PDOStatement|string|Model
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function getUserIofo($condition){ // 模型文件
return db('user')->where($condition)->find();
}
打印出来的结果:
F:\wamp64\www\xxxxx\application\index\controller\Test.php:47:array (size=4) '_id' => object(MongoDB\BSON\ObjectId)[22] public 'oid' => string '5d91a751a374a412e800074a' (length=24) 'name' => string '15698266415d91a751313156.63813749' (length=33) 'age' => int 0 'time' => int 1569826641
在tp5中,系统特意增加一个配置
// 强制把_id转换为id
'pk_convert_id' => true,
增加后,出来的结果就是下面这样的
F:\wamp64\www\xxxxx\application\index\controller\Test.php:47:array (size=4) 'name' => string '15698266415d91a751313156.63813749' (length=33) 'age' => int 0 'time' => int 1569826641 'id' => string '5d91a751a374a412e800074a' (length=24)
(3)修改文档
php代码:
public function saveUser(){ // 控制器测试文件下的方法
$user_model = model('User');
$data = array(
'name'=>'fly',
);
$id = '5d91a751a374a412e800074a';
$where = array('id'=>$id);
$user_model->editUser($data,$where);
}
/**
* 更新文档
* @param type $data
* @param type $condition
* @return type
*/
public function editUser($data, $condition) // 模型文件
{
return db('user')->where($condition)->update($data);
}
工具视图:
(4)删除文档
php代码:
public function deleteUser(){ // 控制器测试文件下的方法
$user_model = model('User');
$id = '5d91a751a374a412e800074a';
$where = array('id'=>$id);
$user_model->deleteUser($where);
}
/**
* 删除文档
* @param $condition
* @return int
* @throws \think\Exception
* @throws \think\exception\PDOException
*/
public function deleteUser($condition){ // 模型文件
return db('user')->where($condition)->delete();
}
工具视图:
三、操作总结
经过以上增、删、改、查的操作后,发现跟原来的TP5中db操作大同小异
我的mongoDb之旅(一)的更多相关文章
- 转载:MongoDB之旅(超赞,适合初学者)
MongoDB是目前工作中经常使用到的NoSQL数据库. 本博客只记录相关理论知识和技巧,涉及到实践的部分都会单开Blog来记录实践过程. ------------------------------ ...
- 我的mongoDb之旅(二)
题序:上一回,咱们简单的操作了一些增减改查的操作,这一次,再来进行一场奇妙之旅 一.案例讲解 (1).字段有值与没值时的单条数据 第一条数据title这个字段(mysql用久了,习惯这么叫了)是没有数 ...
- MongoDB安装并随windows开机自启
MongoDB的官方下载站是http://www.mongodb.org/downloads,可以去上面下载最新的程序下来.在下载页面可以看到,对操作系统支持很全面,OS X.Linux.Window ...
- MongoDB在Windows下安装及配置
第一步 下载MongoDB http://www.mongodb.org/downloads 第二步 解压到D:\mongodb\目录下,为了命令行的方便,可以把D:\mongodb\bin加到系统环 ...
- 在WIN7下安装运行mongodb 1)、下载MongoDB
1).下载MongoDB http://downloads.mongodb.org/win32/mongodb-win32-i386-2.4.5.zip 下载Windows 32-bit版本并解压缩, ...
- mongodb学习(三) 安装和基本CRUD
菜鸟啊...先吐槽一下自己 发现mongodb已经升级到2.6标准版了. 服务端最新安装方法: http://www.cnblogs.com/lzrabbit/p/3682510.html 一 准备 ...
- Node+Express+MongoDB+Socket.io搭建实时聊天应用实战教程(一)--MongoDB入门
前言 本文并不是网上流传的多少天学会MongoDB那种全面的教程,而意在总结这几天使用MongoDB的心得,给出一个完整的Node+Express+MongoDB+Socket.io搭建实时聊天应用实 ...
- 简明 MongoDB 入门教程
MongoDB 是免费开源的跨平台 NoSQL 数据库,命名源于英文单词 humongous,意思是「巨大无比」,可见开发组对 MongoDB 的定位.与关系型数据库不同,MongoDB 的数据以类似 ...
- 在WIN7下安装运行mongodb
1).下载MongoDB http://downloads.mongodb.org/win32/mongodb-win32-i386-2.4.5.zip 下载Windows 32-bit版本并解压缩, ...
随机推荐
- gulp的介绍和手动安装
gulp, 前端自动化工具, 文件操作, 项目上线之前,将碎片文件合并,将ES6转成ES5,文件压缩,快速搭建服务器... gulp基于node环境 gulp就是node的一个非内置的小模块 gulp ...
- 分析一次double强转float的翻车原因
背景 人逢喜事精神爽,总算熬到下班撩~~ 正准备和同事打个招呼回家,被同事拖住问了.
- java1.8新特性(一)接口的默认方法
一 简介 我们通常所说的接口的作用是用于定义一套标准.约束.规范等,接口中的方法只声明方法的签名,不提供相应的方法体,方法体由对应的实现类去实现. 在JDK1.8中打破了这样的认识,接口中的方法可以有 ...
- 一起来读Netty In Action之传输(三)
当我们的应用程序需要接受比预期多很多的并发连接的时候,我们需要从阻塞传输切换到非阻塞传输上去,如果是我们的网络编程是基于jdk提供的API进行开发地的话,这种传输模式的切换几乎要我们重构整个网络传输相 ...
- Spring Cloud(二):服务消费者
创建“服务消费者” 创建一个基础的Spring Boot工程,命名为springboot-consumer,并在pom.xml中引入需要的依赖内容: <dependency> <gr ...
- VUE Node模式下,如何改变菜单的颜色,如何将超长文字缩略显示,在鼠标进入后展开全部显示,鼠标移出则恢复缩略显示
VUE Node模式下,如何改变菜单的颜色,如何将超长文字缩略显示,在鼠标进入后展开全部显示,鼠标移出则恢复缩略显示: “事件”引起变量值的变化,系统引擎自动根据变量值的变化刷新页面 在VUE Nod ...
- 前端自动化部署linux centOs + Jenkins + nignx + 单页面应用
Jenkins是什么? Jenkins 是一款业界流行的开源持续集成工具,广泛用于项目开发,具有自动化构建.测试和部署等功能. 准备工作 Linux centOS系统阿里云服务器一个 码云一个存放vu ...
- Android四大组件初识之Activity
一.Activity的生命周期 Activity生命周期是一系列方法调用.熟悉各个方法调用时间,我们在创建activity就能根据具体实现选择合适的方法覆盖. 1. 覆盖Activity的生命周期方 ...
- 〈三〉ElasticSearch的认识:搜索、过滤、排序
目录 上节回顾 本节前言 文档的搜索 URL参数条件搜索 请求体条件搜索 语法与示例: 补充: 小节总结: 文档的过滤filter 语法与举例: filter与bool constant_score ...
- PHP秒杀系统 高并发 高性能的极致挑战 下载
第1章 课程介绍 秒杀系统在各种网站和应用中经常会用到.本课程从基本的系统设计和基础功能开始教导大家用PHP来设计和实现秒杀系统,并且为海量并发提供更高级的技术方案和实现手段. 第2章 系统技术选型分 ...