php7操作MongoDb详解

2023-05-16

MongoDB的强大是不容置疑的,目前PHP针对MongoDB的操作挺多的,但是看的有点晕,还是自己总结一下实在,因为现在一直用PHP7及以上了,所有PHP7之前的版本就不再去说明,这里只针对PHP7对MongoDB的具体操作进行说明

这里MongoDB的安装就不说了,自行处理

1、链接MongoDB

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
//$manager = new MongoDB\Driver\Manager("mongodb://username:password@localhost:27017");//若是有密码,则把用户名和密码填上

2、实例化读写操作,这个操作数据的增删改的

$buck = new MongoDB\Driver\BulkWrite(['ordered'=>true]);

这里有两个参数注意下
ordered :按顺序传入命令,一个操作失败后续所有操作自动取消
unordered :任意顺序传入,可以是并行的,任何错误要在所有操作尝试之后再报告

3:新增

$data = ['name' => '王五','age'=>18,'create_time'=>date('Y-m-d H:i:s')];//新增数据,数据由自己处理
$buck->insert($data);

4、修改

$buck->update(['name'=>'王五'],['$set'=>['name'=>'Judy','id'=>'129']],['multi'=>true]);

说明:第一个参数是条件,第二个参数更新内容,注意这个$set不要写错,第三个参数是一些附加参数,可选的,比如要是批量更新,则加第三个参数里增加multi为true即可
5、删除

$buck->delete(['name' => '王五']);

说明:这里的删除是符合条件的都会删除,所有条件要处理好

以上的增删改操作写好以后,执行下面的代码

$wirte = new \MongoDB\Driver\WriteConcern(\MongoDB\Driver\WriteConcern::MAJORITY,1000);

$result = $manager->executeBulkWrite('runoob.runoob',$buck,$wirte);

说明:这里的MAJORITY是多数的意思,1000是超时时间,这两个参数都是可选的,可以不写
runoob.runoob是数据库及集合,可以理解成数据库.表名,如果新增的时候没有这个库或集合,会自动创建,执行完这一步,上面的增删改就成功了,下面这个是新增后的数据
在这里插入图片描述

6、查询

$query = new \MongoDB\Driver\Query(['name'=>'王五'],['sort'=>['id'=>-1],'limit'=>1]);
$result = $manager->executeQuery('runoob.runoob',$query);
$data = [];
foreach ($result as $value){
    $data[] = $value;
}

说明:query的第一个参数是条件,第二个参数是一些附加参数,如排序(sort参数:1是ASC,-1相当于DESC)、查询条数、分组等,最后面查出来以后要遍历赋值给新数组,数组里面都是对象,这个要注意

基本的操作就是这些,如果是用一些框架如laravel、thinkphp6等来操作的话更便捷,就跟操作MySQL一样即可,这里就不展开说明了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php7操作MongoDb详解 的相关文章

  • Spring Mongo Populator 一一

    我在 Kotlin 上使用 MongoDB 和 Spring 并且希望我的应用程序在启动时填充 MongoDB 集合 并在每次启动时清理 我的问题是 如果我填充的某些数据有问题 如何才能一一填充数据以便容错 my code Configur
  • 在 MongoDB 中按索引更新插入数组中子文档中的字段

    我有以下 MongoDB 结构 id other stuff my array title body email title body email title body email 我需要在 my array 字段内的子文档中更新 或插入
  • 在 MongoDB 中查找 7 天前的记录

    我有一个包含对象的集合 如下所示 1 id ObjectId 551c6605e4c6ac495c923aab sender id ObjectId 551c6605e4c6ac495c923aac rep sender id 38 sen
  • Windows 7 机器上的 MongoDB:无法建立连接

    在 Windows 7 机器上使用 mongod exe 启动 Mongo 后 我尝试启动 mongo shell 但失败并出现以下错误 无法连接到 127 0 0 1 27017 原因 errno 10061 否 由于目标机器主动拒绝而无
  • Mongoose 查询:删除“_id”属性,在结果中保留虚拟属性“id”

    我正在运行 Express js 应用程序 并且有以下设置 模型 js var schemaOptions toJSON virtuals true toObject virtuals true var modelSchema new mo
  • MacOS 每秒唤醒次数错误

    构建 Rails 应用程序 ruby 2 4 0p0 Rails 5 1 4 并使用我的 Macbook Air MacOS High Sierra 10 13 2 进行本地测试 我不断遇到此问题 过去 241 秒内有 45001 次唤醒
  • 检索 mongoDB 文档中的空数组或 null

    我有我学校所有学生的收藏 每个文档都有一个sports列出每个学生从事的运动的数组属性 但该属性可能显示为sports or sports null或者根本不出现 如何检索属于上述三种情况之一的所有文件 如何向只有一项运动但未表示为数组的学
  • 如何更改 MongoDB 用户权限?

    例如 如果我有这个用户 gt db system users find user testAdmin pwd some hash roles clusterAdmin otherDBRoles TestDB readWrite 我想给那个用
  • Mongodb 限制聚合查询中的数组

    我正在尝试编写一个查询来返回每个类别中的前 X 个术语 例如前 5 个 前 10 个等 每个术语都有一个关联的类别 并且基于另一个术语的帮助堆栈溢出问题 https stackoverflow com questions 25666187
  • MongoDB 复合键:InvalidOperationException:{document}.Identity 不受支持

    我在水合由复合 ID 组成的类时遇到问题 该复合 ID 又具有基类 我收到一条错误消息InvalidOperationException document Identity is not supported 我试图写入数据库的类如下 pub
  • Mongodb 聚合数组中的子文档

    我正在使用 mongodb 作为后端实现一个小型应用程序 在此应用程序中 我有一个数据结构 其中文档将包含一个包含子文档数组的字段 我使用以下用例作为基础 http docs mongodb org manual use cases inv
  • Pymongo 批量插入

    我正在尝试批量插入文档 但批量插入时不会插入超过 84 个文档 给我这个错误 in insert pymongo errors InvalidOperation cannot do an empty bulk insert 是否可以批量插入
  • mongodb 聚合 - 累积字段的不同组值

    如果我有Player表格文件 name String score Int 我有Group文档 其中组代表玩家列表 groupName String players ObjectID 玩家可以属于多个组 我想做一个聚合Player文档 按以下
  • MongoDB:检查值是否为空或数组是否为空

    我想匹配所有不包含 公司 属性或 公司 值为空或空数组的文档 User find Company in null function err users if err throw err console log users length th
  • 使用 PHP 从 Mongo 解码 JSON

    我已经看过这个线程 PHP 解码嵌套 JSON https stackoverflow com questions 3555335 php decode nested json并没有设法用它来解决我的问题 我目前正在从 Mongo 获取 J
  • 使用 Mongoose 无法找到按 ObjectId 搜索的文档

    Campaign find client id req param client id error campaigns gt if error response error error message else for campaign i
  • golang mongodb (mgo) 没有插入文档

    我在使用 mgo 在 mongodb 中保存 golang 结构时遇到问题 type AN Track Log struct Id bson ObjectId bson id omitempty user session id str st
  • 如何更新 Laravel 编辑视图中的图像?

    在 Laravel 中 我的编辑视图中有一个名为 个人资料图片 的字段 每当我单击 编辑 按钮时 我都会在编辑视图中从数据库中获取所有值 但没有获得图像 并且如果每当我每次单击 提交 按钮时 我都必须如果没有上传图像 我无法进一步处理我想要
  • 匹配包含 MongoDB 中提供的数组的任意组合的数组字段

    我想使用指定的数组元素列表进行查询 以便返回的文档只能包含我传递的元素 但不需要包含所有元素 鉴于以下文件 name Article 1 tags Funny Rad name Article 2 tags Cool Rad name Ar
  • 如何在 Meteor 应用程序之间共享 MongoDB 集合?

    我希望能够为我的项目提供一个管理应用程序和一个客户端应用程序 理想情况下 我希望能够拥有一个共享的 MongoDB 集合 我怎样才能做到这一点 我尝试在两个不同的应用程序中创建具有相同名称的集合 但发现 Meteor 会将数据分开 知道我能

随机推荐

  • 【数组】【循环】用冒泡和顺序排列法从小到大排列十个整数

    一 大致思路 用数组排列十个整数 xff0c 数组的作用无非是用来定义十个整数 xff0c 所以一开始先定义a 10 但那固然可以先定义一个常量为10 xff0c 都一样的 xff0c 然后程序中大多用循环语句 xff0c 输入用循环 外部
  • 有关“当前不会命中断点,还没有为该文档加载任何符号”问题(未解决)

    在学习指针与数组关系时 xff0c 有时会出现关于断点的问题 虽然报错了但是程序可以正常运行 xff0c 只是不会在断点位置停下 在网上查找了很多解决方法 xff0c 如工具 选项 调试 常规中的 要求源文件和原始版本完全匹配 的勾去掉或者
  • 用递归方法求n的阶乘

    解析在代码注释里面 xff0c 源码也在下面 源码 xff1a 用递归方法求n的阶乘 include lt stdio h gt int main int fac int 声明函数 int n y 定义变量 printf 34 请输入一个整
  • C++语言求百鸡问题

    一 问题提出 xff1a 百鸡问题 xff1a 鸡翁一 xff0c 值钱五 xff1b 鸡母一 xff0c 值钱三 xff1b 鸡雏三 xff0c 值钱一 百钱买百鸡 xff0c 问鸡翁 母 雏各几何 xff1f 二 编程求解 xff1a
  • sublime text _注册码

    转自 xff1a https 9iphp com web html sublime text 3 license key html 使用方法 打开 Sublime Text 3 的 Help Enter Licence xff0c 然后根据
  • JS 中的=>箭头函数使用说明

    在新的JS版本中 xff0c 出现了以双箭头 61 gt 表示函数的方式即箭头函数 以下对箭头函数的使用作出说明 一 箭头函数与普通函数 xff08 function xff09 的区别 xff1a 1 1 箭头函数形式如下 xff1a s
  • C语言 冒泡排序

    目标 xff1a 使用冒泡排序对一个数组进行排序 要求 xff1a xff08 1 xff09 从小到大输出排序结果 xff08 2 xff09 输出每一趟排序 xff08 3 xff09 计算交换多少次 一 将数组元素输入 本题要求先输入
  • C语言 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

    要求 xff1a 1 xff09 用while循环及getchar 函数完成字符串输入 xff0c 回车键结束 2 xff09 分别统计英文字母 空格 数字和其它字符的个数 3 xff09 打印统计结果 运行参考示例 xff1a 输入1 x
  • C语言 数组选择法排序

    利用选择法对n个数 xff08 100以内正整数 xff09 进行排序 选择法排序的过程是 xff1a 将第1个元素作为最小元素 xff0c 与后面n 1个元素比较找出最小元素 xff0c 记录其下标 xff0c 与第1个元素互换 xff1
  • FL Studio 20 怎么设置中文?

    根本找不到语言切换那一项
  • Linux中软件包及安装命令

    2022 12 5 DAY08 一 xff0c 装包 xff08 包名 xff0c 软件名 xff09 包名 软件名 1 xff0c 获取本地软件包 mount dev sr0 mnt 临时生效 xff0c 重启后需要再次挂载 挂载 文件系
  • 网络安全学习--kali攻击WiFi暴力破解个人笔记

    我的无线网卡是3072l xff08 在win11上运行会掉 xff0c 必须杀掉进程或者拔掉换个接口 xff09 步骤一准备工作 插入网卡 ifconfig 检查网卡信息 xff0c 出现wlan0表示连接成功 步骤二 1 开启无线网卡监
  • 【C语言】从键盘输入10个数,找出其中最小值并将它插在第一个数之前,再将新序列输出出来

    include lt stdio h gt void main int a 10 61 0 i j min for i 61 0 i lt 10 i 43 43 xff09 scanf d amp a i xff1b 输入10个数 min
  • 树莓派ffmpeg直播推送,nginx视频流接受转码,客户端hls rtmp视

    树莓派ffmpeg直播推送 xff0c nginx视频流接受转码 xff0c 客户端hls rtmp视频流拉流 树莓派利用ffmpeg将摄像头视频流以rtmp视频流的格式 xff0c 推送到安装有nginx nginx rtmp的云服务器端
  • c++ 中 char 与 string 之间的相互转换问题

    首先必须了解 xff0c string可以被看成是以字符为元素的一种容器 字符构成序列 xff08 字符串 xff09 有时候在字符序列中进行遍历 xff0c 标准的string类提供了STL容器接口 具有一些成员函数比如begin end
  • POSIX消息队列

    POSIX消息队列概述 消息队列是Linux IPC中很常用的一种通信方式 xff0c 它通常用来在不同进程间发送特定格式的消息数据 消息队列和管道和FIFO有很大的区别 xff0c 主要有以下两点 xff1a 一个进程向消息队列写入消息之
  • php 10位isbn 13位isbn 的相互转换

    由 2007 年 1 月 1 日 起 xff0c 国 际 标 准 书 号 下 简称书号 的格 式 会 由 10 位 修 订 为 13 位 是 次 修 订 的 主 要 目 的 xff0c 是增加国际标 准 书 号 系 统 的 容 量 xff0
  • error: failed to run custom build command for `openssl-sys `

    error failed to run custom build command for 96 openssl sys v0 9 60 96 遇到这个问题需要安装最新的libssl包 xff0c 1 执行命令 xff1a sudo apt
  • docker gitlab/gitlab-ce 升级版本

    原因 发现服务器内存占用100 执行命令查看内存占用 ps aux head 1 ps aux grep v PID sort rn k 43 4 head 20 发现 tmp juma目录占用内存过高 但是本机目录并没有 tmp juma
  • php7操作MongoDb详解

    MongoDB的强大是不容置疑的 xff0c 目前PHP针对MongoDB的操作挺多的 xff0c 但是看的有点晕 xff0c 还是自己总结一下实在 xff0c 因为现在一直用PHP7及以上了 xff0c 所有PHP7之前的版本就不再去说明