MongoDB相关操作
1. 连接MongoDB
<?php
//1.连接到MongoDB
$host = "127.0.0.1";
$port = 27017;
$server = "mongodb://$host:$port";
$mongodb = new MongoClient($server);
echo "<pre>";
var_dump($mongodb);
//2.选择数据库
$db = $client -> hytc;
var_dump($db);
//3.选择数据表
$collection = $db -> user;
var_dump($collection);
注:库、表无需手动创建,选择后自动创建
2. CRUD操作
insert(数据) 插入数据(必是一个数组)
//插入文档(关联数组)
$data = ["name"=>"小明","age"=>10,"hobby"=>"swim"];
$result = $collection -> insert($data);
echo "<pre>";
var_dump($result);
find(查找条件,查找字段) 查询数据
//查询数据(返回的是cursor游标,资源)
$condition = ['name'=>'小明'];
$fields = [
'_id' => false, //不查询id
'name' => true, //查询name
'hobby' => true //查询hobby
];
$result = $collection -> find($condition,$fields);
foreach($result as $key => $value){
echo "<pre>";
var_dump($value);
}
update(查找条件,更新之后的内容=>文档内容) 更新数据
//更新数据
$condition = ['name'=>'小明'];
$new_doc = [
'$set' => ["hobby" => "swim"]
];
$result = $collection -> update($condition,$new_doc);
echo "<pre>";
var_dump($result);
注:
- 若不存在hobby字段,则创建该字段
- 默认更新会进行替换操作,可通过属性修改器进行修改而不是替换
- 若有多条记录符合更新条件,默认只会更新第一个数据
- 若需更新符合更新条件的所有记录,则设置该函数的第三个参数:[“multiple”=>true]
//更新数据
$condition = ['age'=>'20'];
$new_doc = [
'$set' => ["hobby" => "swim"]
];
$result = $collection -> update($condition,$new_doc,['multiple'=>true]);
echo "<pre>";
var_dump($result);
remove(查找条件) 删除数据
//删除数据
$condition = ['name'=>'小明'];
$result = $collection -> remove($condition);
3. MongoDB 属性修改器
- 用来对文档的某个属性进行修改
$set 设置
- 不存在属性则添加, 存在属性则修改
$data = ["name"=>"小红","age"=>12,"hobby"=>"dance"];
$collection -> insert($data);
$result = $collection -> find([],['_id'=>false]);
foreach($result as $key => $value){
echo "<pre>";
var_dump($value);
}
- 修改某个字段、属性的值
$new_doc = [
'$set' => ["hobby" => "swim"]
];
$unset 删除某个属性
$condition = ['name'=>'小明'];
$new_doc = [
'$unset' => ["hobby" => "swim"]
];
$collection -> update($condition,$new_doc);
$inc 递增某个属性
$condition = ['name'=>'小明'];
$new_doc = [
'$inc' => ['age' => 20]
];
$collection -> update($condition,$new_doc);
//原先age=10,现为30
$push 压入元素到数组
- 操作的属性需要是数组
$data = ['name'=>'小刚','age'=>14,'hobby'=>['read','climb']];
$collection -> insert($data);
- 向hobby属性(元素),添加元素
$condition = ['name'=>'小刚'];
$new_doc = [
'$push' => ['hobby' => 'sing']
];
$collection -> update($condition,$new_doc);
$pushAll 同时压入多个元素到数组
$condition = ['name'=>'小刚'];
$new_doc = [
'$push' => ['hobby' => 'sing','hobby' => 'jump']
];
$collection -> update($condition,$new_doc);
$addToSet 添加到集合, 不能添加重复元素
$pull 删除数组中的某一个元素
$pullAll 删除多个元素
$pop 弹出元素.
MongoDB相关操作的更多相关文章
- MongoDB学习笔记(五) MongoDB文件存取操作
由于MongoDB的文档结构为BJSON格式(BJSON全称:Binary JSON),而BJSON格式本身就支持保存二进制格式的数据,因此可以把文件的二进制格式的数据直接保存到MongoDB的文档结 ...
- Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作
2 Mongodb CRUD 操作 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mong ...
- mongodb高级操作及在Java企业级开发中的应用
Java连接mongoDB Java连接MongoDB需要驱动包,个人所用包为mongo-2.10.0.jar.可以在网上下载最新版本. package org.dennisit.mongodb.st ...
- Mongodb相关 (Shell命令 / mongoose)
Mongodb相关 1.创建一个文件夹作为数据库存放的目录 2.打开cmd cd到Mongodb/bin目录去 3.执行mongod --dbpath "第一项创建的文件夹(数据库数据存放目 ...
- 第12章—使用NoSQL数据库—使用MongoDB+Jpa操作数据库
使用MongoDB+Jpa操作数据库 SpringData还提供了对多种NoSQL数据库的支持,包括MongoDB;neo4j和redis.他不仅支持自动化的repository,还支持基于模板的数据 ...
- MongoDB常用操作整理
Mongodb:是一种NoSQL数据库,NoSQL:Not Only SQLSQL: 数据表->JDBC读取->POJO(VO.PO)->控制层转化为JSON数据->客户端 这 ...
- 从零自学Hadoop(20):HBase数据模型相关操作上
阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
- 从零自学Hadoop(21):HBase数据模型相关操作下
阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
- 理解CSV文件以及ABAP中的相关操作
在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...
随机推荐
- Dlink DIR-823G 漏洞挖掘过程
前言 本文由 本人 首发于 先知安全技术社区: https://xz.aliyun.com/u/5274 初步分析 首先下载固件 https://gitee.com/hac425/blog_data/ ...
- Python3 循环语句
Python3 循环语句 转来的 很适合小白 感谢作者 Python中的循环语句有 for 和 while. Python循环语句的控制结构图如下所示: while 循环 Python中wh ...
- Linux 环境下为VirtualBox安装增强功能
VirtualBox安装CentOS后,再安装增强功能就可以共享文件夹.粘贴板以及鼠标无缝移动,主要步骤如下: 1.yum -y update 2.yum -y install g++ gcc gcc ...
- 初探diskstats
内核很多重要子系统均通过proc文件的方式,将自身的一些统计信息输出,方便最终用户查看各子系统的运行状态,这些统计信息被称为metrics. 直接查看metrics并不能获取到有用的信息,一般都是由特 ...
- Entity Framework 更新模式之Attach与EntityState.Modified模式的区别
数据库中有一个City表 初始时数据: 实体类与Fluent Api配置映射 public class City { public int Id { get; set; } public string ...
- ORACLE RAC clusterware/GI 启动诊断流程图11.2+
- 为什么有时候NSData转换成NSString的时候返回nil
为什么有时候NSData转换成NSString的时候返回nil 有时候,NSData明明有值,可是,当转换成NSString的时候,却没有值,现在来进行测试:) -现在提供测试用素材- 源码如下: / ...
- PHP CLI模式下echo换行
近日在执行导库程序的时候,需要在CLI模式下运行程序进行调试,如下图,这是什么鬼?不是我想要的结果 后经过查资料发现代码中执行的输出为 //错误方法实例 echo '其他-683\n'; //正确打开 ...
- 拟牛顿 DFP matlab
function sevnn x=[1,0]'; [x,val]=dfp('fun','gfun',x) end function f=fun(x) f=100*(x(1)^2-x(2))^2+(x( ...
- jQuery: 刨根问底 attr and prop两个函数的区别
In this short post I will explain the difference between attributes and properties in HTML. The .pro ...