需求场景:

`test` 表中的 `id` = 1 数据 `num` 字段 自增+1或者-1

MySQL下:

UPDATE `test`  SET `num` = `num` + 1  WHERE  `id` = 1

UPDATE `test`  SET `num` = `num` - 1  WHERE  `id` = 1

MongoDB下:

// 增

db.test.findAndModify(

{

query:{ "id" : 1 },

update: { $inc:{ "num":1 } },

"new":true

});

// 减

db.test.findAndModify(

{

query:{ "id" : 1 },

update: { $inc:{ "num": -1 } },

"new":true

});

这里介绍下MongoDB的findAndModify方法

findAndModify属于原子操作模型数据

所谓原子操作就是要么这个文档保存到Mongodb,要么没有保存到Mongodb,不会出现查询到的文档没有保存完整的情况。

MongoDB findAndModify方法的语法如下。

db.collection.findAndModify({

query: ,

sort: ,

new: ,

fields: ,

upsert:

})

参数说明如下:

query: Defines the selection criteria as to which record needs modification.

query :定义关于哪些记录需要修改的选择标准。

sort: Determines which document should be modified when the selection criteria retrieves multiple documents.

sort :确定选择标准检索多个文档时应修改的文档。

new: indicates that the modified document will be displayed.

new :表示将显示修改后的文档。

fields: specifies the set of fields to be returned.

fields :指定要返回的字段集。

upsert: creates a new document if the selection criteria fails to retrieve a document.

upsert :如果选择标准无法检索文档,则创建一个新文档。

PHP7语法如下:

$param   = [

'findAndModify' => "test",

'query'         => ["id" => 1],

'update'        => ['$inc' => ["num" => 1]],

'new'           => true,

];

$command = new \MongoDB\Driver\Command($param);

$result  = (new \MongoDB\Driver\Manager("mongodb://localhost:27017", []))->executeCommand("test", $command);

$res     = $result->toArray();

$value   = (array)$res[0];

var_dump($value['value'] ?? NULL)

mongo php 自增,PHP7下MongoDB自增或自减一个字段的值相关推荐

  1. php插入一个自增字段,thinkphp-自增或自减一个字段的值

    说明setInc/setDec 方法返回影响数据的条数 自增 默认加1 示例Db::table('think_user') ->where('id', 1) ->setInc('score ...

  2. mongodb如何实现更新一个字段的值为另外一个字段的值?

    转载自   mongodb如何实现更新一个字段的值为另外一个字段的值? db.CargoUserProfiles.find().forEach(function(item){db.CargoUserP ...

  3. mongodb查询一个字段所有值

    mongodb查询一个字段所有值 db.集合名.find( {}, {需要查询的字段:1, _id:0} ) 例如 db.movies.find({}, {'cover':1, _id: 0}) 1表 ...

  4. linux中mongo的导出数据,Linux下mongodb安装及数据导入导出教程(示例代码)

    Linux下mongodb安装及数据导入导出教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 一.Linux下mongodb安装的一般步骤 1 ...

  5. MongoDB的增删改查操作

    前面介绍了MongoDB的基本概念与常见的操作,本文来重点分析下MongoDB的增删改查操作 文章目录 什么是"mongo" 新增操作 删除操作 更新操作 查询操作 Where语句 ...

  6. Mongodb的集合插入一个字段

    在mongodb的现有集合中增加一个字段: db.rules.update({"_id" : ObjectId("587e5e0e09a4670334208e88&quo ...

  7. MongoDB基本操作(增删改查)

    2019独角兽企业重金招聘Python工程师标准>>> 基本操作 基本的"增删查改",在DOS环境下输入mongo命令打开shell,其实这个shell就是mon ...

  8. MongoDB的增删改查

    1.启动 - 配置环境变量 MongoDB/3.4/bin 通过命令 mongod 来启动 MongoDB 默认端口 27017 redis:6379 Mysql:3306 可以指定数据库存放目录,但 ...

  9. Mongodb c#增删改查

    写在前面 最近项目需要,就研究了下mongodb,也是为了快速上手,就自己弄了一个简单的例子,这里记录一下. Mongodb 传统的关系数据库一般由数据库(database).表(table).记录( ...

最新文章

  1. Nginx配置使用积累[不断更新]
  2. unix awk手册读书笔记
  3. 卷积神经网络(CNN)前向传播算法
  4. easyui 1.4.2 Tab刷新图标重复问题
  5. linux怎么用命令备份数据库,使用linux的mysqlhotcopy命令备份数据库
  6. MyBatis框架笔记02:接口方式使用MyBatis
  7. EXCEL统计不重复值的数量
  8. shell脚本中的日期处理
  9. 尚硅谷-Promise
  10. Neural Approaches to Conversational AI
  11. 软件测试工程师发展前景好吗?
  12. 区块链游戏常见的 10 种分类
  13. echarts嵌套饼图自动动画_使用百度echarts制作可视化大屏——制作一个双层饼图...
  14. Eclipse+tomcat开发j2ee经典入门例子
  15. 刚入门的自媒体人,也能给视频配上好听的声音
  16. 貓空纜車 現代與自然的旅遊結合
  17. jar hell问题以及解决方案
  18. 艾利特EC系列机器人使用入门
  19. Android免Root自动安装apk
  20. 山东自考计算机科学与技术,速看,山东自考本科计算机科学与技术专业介绍

热门文章

  1. 如何 sizing 一台物理机上可以承载多少 VMware 虚拟机? 分享 Vsphere HA 几个实用知识点
  2. 阿里云-设备影子概览
  3. Redis学习总结(23)——Redis如何实现故障自动恢复?浅析哨兵的工作原理
  4. Spring Boot学习总结(12)——Spring Boot Admin 2.0应用监控示例
  5. Docker学习总结(14)——从代码到上线, 云端Docker化持续交付实践
  6. Spring MVC学习总结(5)——SpringMVC项目关于安全的一些配置与实现方式
  7. Java基础学习总结(25)——Log4j快速入门教程
  8. docker mysql5.7.19_Docker19.03.13下安装Mysql57
  9. React 16.8.3 发布,构建用户界面的 JavaScript 库
  10. 使用wampserver部署的织梦站点无法登录后台