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

需求场景:

`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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值