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详解 的相关文章

  • 我可以按日期查询 MongoDB ObjectId 吗?

    我知道 ObjectId 包含它们的创建日期 有没有办法查询ObjectId的这方面 将时间戳弹出到 ObjectId 中 http www kchodorow com blog 2011 12 20 querying for timest
  • MongoDB 查询返回空数组

    有一个基本的 Express 应用程序连接到几乎 0 5 GB 的 MongoDB 数据库 当我运行时 router get function req res next medical data find State CT function
  • Inno Setup安装先决条件[重复]

    这个问题在这里已经有答案了 我正在通过 Inno Setup 创建一个安装程序 我看到很多关于如何检测先决条件是否存在的代码示例 但没有任何关于当我找不到先决条件时如何实际安装先决条件的代码示例 我确信它非常简单 但是我该如何安装先决条件呢
  • 使用mongoid动态创建索引

    我有一项为我的文档创建新字段的工作 我想在这项工作结束时创建该字段的索引 我试过 Model index field gt 1 and also Mongoid Sessions default rating prediction ensu
  • 我可以要求在 mongodb 集合中设置属性吗? (不为空)

    我可以在 mongodb 中定义一个需要设置某些属性的模式吗 很像NOT NULL在 SQL 中 如果可以的话 这个的语法是什么 我正在使用 Node js 和猫鼬 猫鼬 v3 6 15 MongoDB v2 4 5 EditCharles
  • MongoDB $orderby 和 Sort 之间的区别

    我想获取最新的文档 这显然是一个文档 因此findOne应该可以正常工作 但findOne这里返回插入的第一个文档 所以我现在有两个选择要么使用 orderBy with findOne or use sort 功能与 limit in f
  • 如何在 Mongoose 中执行查找查询?

    我在 mongodb 中有一组电子书数据 例如 id ObjectId 58b56fe19585b10cd42981d8 cover path D Ebooks uploads ebooks cover 1488285665748 img1
  • 当字段不为空时创建部分索引

    我正在尝试在字段上创建部分索引 但仅当该字段不为空时 换句话说 我希望能够让许多文档能够存储 null 但对于在字段中实际具有值的文档 我希望该值是唯一的 这是我尝试使用的代码 db account createIndex email 1
  • Mongoid 命名范围比较同一文档中的两个时间字段

    我需要在 Mongoid 中创建一个命名范围来比较同一文档中的两个时间字段 例如 scope foo where gt updated at gt gt checked at 这显然不会像它对待的那样起作用 checked at作为一个符号
  • 嵌入文档中的mongodb限制

    我需要创建一个消息系统 一个人可以在其中与许多用户进行对话 例如 我开始与 user2 user3 和 user4 交谈 因此他们中的任何人都可以看到整个对话 并且如果对话在任何时候都不是私密的 则任何参与者都可以将任何其他人添加到对话中
  • Node.js 重用 MongoDB 参考

    我无法理解 Node js 例如 MongoDB 访问 这是我得到的 mydb js var mongodb require mongodb server new mongodb Server staff mongohq com 10030
  • 元素数组中数组的 MongoDB 全文

    当元素数组中的数组包含应与我的搜索匹配的文本时 我无法检索文档 以下是两个示例文档 id foo name Thing1 data text X X name Thing2 data text X Y id foo
  • MongoDB - 打开和关闭连接 - 建议良好实践

    我通过 Node js 的驱动程序使用 MongoDB 我通常打开一个连接 通过connect 方法 任何时候我需要执行操作并关闭它 通过close 方法 一旦我完成 在我的程序中 我自然需要对 MongoDB 执行许多操作 因此我会多次打
  • 如何使用 PyMongo 在重复键错误后继续插入

    如果我需要在 MongoDB 中插入尚不存在的文档 db stock update one document set document upsert True 将完成这项工作 如果我错了 请随时纠正我 但是 如果我有一个文档列表并想将它们全
  • 查询 MongoDB 集合中的字段。

    我正在尝试查询 mongodb 集合中的特定字段 这是我的代码和输出 Mongo m new Mongo DB db m getDB mydb DBCollection coll db getCollection student addin
  • Mongodb 数据建模/投票更新(向上和向下)

    Mongo 中有一个关于投票数据模型 更新查询的示例 http www mongodb org display DOCS MongoDB Data Modeling and Rails MongoDBDataModelingandRails
  • Java/MongoDB 按日期查询

    我将一个值作为 java util Date 存储在我的集合中 但是当我查询以获取两个特定日期之间的值时 我最终得到的值超出了范围 这是我的代码 插入 BasicDBObject object new BasicDBObject objec
  • 警告:访问循环依赖内模块导出的不存在属性“MongoError”

    我正在使用节点执行 API 并使用 Mongoose 当我给一个yarn dev启动我的 Nodemon Mongo 出现错误 我不知道如何解决这个问题 有人有什么想法吗 我使用的是 MongoDB Atlas 数据库 就在出现以下错误之后
  • pymongo复制辅助读取引用不起作用

    我们有 MongoDB 2 6 和 2 副本集 并且我们使用pymongo驱动程序并使用以下 url 连接 Mongodb 副本集 mongodb admin email protected cdn cgi l email protecti
  • Node js mongodb 删除错误“key $lte 不得以 '$' 开头”

    db collection session remove timestamp lte a function err docs console log err console log docs Version mongodb is 2 6 5

随机推荐

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

    一 大致思路 用数组排列十个整数 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之前的版本就不再去说明