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 ...
随机推荐
- JSON学习笔记-2
JSON的语法 1.JSON 数据的书写格式是:名称/值对. "name" : "我是一个菜鸟" 等价于这条 JavaScript 语句: name = &qu ...
- 网络 IP地址、网段、子网掩码
IP地址范围,最小:00000000,00000000,00000000,00000000:最大:11111111,11111111,11111111,11111111 即:最小:0.0.0.0 最大 ...
- mac 手动卸载软件位置
系统偏爱设置 /Users/xxxxx/Library/Preferences/ xxxx 支持文件 /Users/xxxxx/Library/Application Support/xxx文件夹 数 ...
- SqlServer触发器实现表的级联插入、级联更新
首先建立两张表,分别为test1与test2,期望在更改test1的时候,test2的相关记录能够同时做出更改.假定test1与test2的表结构相同,如下表所示 name age 触发器实现 ...
- Win10自动重启原因怎么查Windows10无故自动重启
电脑偶尔自动重启,可能很少用户会在意,若电脑经常无故重启,那么应该怎么办,怎么查找电脑无故自动重启原因呢?下面就以Windows10系统自动重启为例,来查查WIN10无故重启是什么原因导致.百度经验: ...
- Web通信协议:OSI、TCP、UDP、Socket、HTTP、HTTPS、TLS、SSL、WebSocket、Stomp
1 各层的位置 1.1 OSI七层模型全景图 OSI是Open System Interconnect的缩写,意为开放式系统互联. 1.2 五层网络协议 在七层的基础上, ...
- 【Alpha】Daily Scrum Meeting
一 博客集合贴 11月15日 [Alpha]Daily Scrum Meeting——blog1 11月18日 [Alpha]Daily Scrum Meeting——blog2 11月19日 [Al ...
- BZOJ 2763 飞行路线 BFS分层
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2763 题目大意: Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司 ...
- Jupyter Notebook的使用
命令模式 (按键 Esc 开启) Enter : 转入编辑模式 Shift-Enter : 运行本单元,选中下个单元 Ctrl-Enter : 运行本单元 Alt-Enter : 运行本单元,在其下插 ...
- 第二章 Google guava cache源码解析1--构建缓存器
1.guava cache 当下最常用最简单的本地缓存 线程安全的本地缓存 类似于ConcurrentHashMap(或者说成就是一个ConcurrentHashMap,只是在其上多添加了一些功能) ...