php实现Mongodb自定义方式生成自增ID的方法


Posted in PHP onMarch 23, 2015

本文实例讲述了php实现Mongodb自定义方式生成自增ID的方法。分享给大家供大家参考。具体分析如下:

//首先创建一个自动增长id集合 ids

>db.ids.save({name:"user", id:0});

//可以查看一下是否成功

> db.ids.find();

{ "_id" : ObjectId("4c637dbd900f00000000686c"), "name" : "user", "id" : 0 }

//然后每次添加新用户之前自增一下 ids集合 获得id

>userid = db.ids.findAndModify({update:{$inc:{'id':1}}, query:{"name":"user"}, new:true});

{ "_id" : ObjectId("4c637dbd900f00000000686c"), "name" : "user", "id" : 1 }

//注:因为findAndModify是一个方法完成更新查找两个操作,所以具有原子性,多线程不会冲突。

//然后保存相应的数据

>db.user.save({uid:userid.id, username:"kekeles", password:"kekeles", info:"https://3water.com/ "});

//查看结果

> db.user.find();

{ "_id" : ObjectId("4c637f79900f00000000686d"), "uid" : 1, "username" : "admin", "password" : "admin" }

//这是mongo的shell,如果用的是服务器端程序java php python,可以自己对这些操作封装一下,只用传几个参数就可以返回自增的id,还可以实现像Oracle的跨表的自增id。

自己写了一段php的,拿出来给大家分享。

<?php
function mid($name, $db){
$update = array('$inc'=>array("id"=>1));
$query = array('name'=>$name);
$command = array(
'findandmodify'=>'ids', 'update'=>$update,
'query'=>$query, 'new'=>true, 'upsert'=>true
);
$id = $db->command($command);
return $id['value']['id'];
}
$conn = new Mongo();
$db = $conn->idtest;
$id = mid('user', $db);
$db->user->save(array(
'uid'=>$id, 
'username'=>'kekeles', 
'password'=>'kekeles',
 'info'=>'https://3water.com/ '
));
$conn->close();
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP 和 XML: 使用expat函数(二)
Oct 09 PHP
PHP与SQL注入攻击防范小技巧
Sep 16 PHP
php图像处理函数大全(推荐收藏)
Jul 11 PHP
ThinkPHP3.1基础知识快速入门
Jun 19 PHP
ThinkPHP3.1的Widget新用法
Jun 19 PHP
php实现四舍五入的方法小结
Mar 03 PHP
php编写简单的文章发布程序
Jun 18 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
Mar 01 PHP
java微信开发之上传下载多媒体文件
Jun 24 PHP
php结合mysql与mysqli扩展处理事务的方法
Jun 29 PHP
php登录超时检测功能实例详解
Mar 21 PHP
php实现微信模板消息推送
Mar 30 PHP
php实现约瑟夫问题的方法小结
Mar 23 #PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 #PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 #PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 #PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 #PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 #PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 #PHP
You might like
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
使用jQuery动态加载js脚本文件的方法
2014/04/03 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
js jquery获取当前元素的兄弟级 上一个 下一个元素
2015/09/01 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
2016/06/13 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
微信小程序动态显示项目倒计时效果
2017/06/13 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
[05:59]2018DOTA2国际邀请赛寻真——只为胜利的Secret
2018/08/13 DOTA
python 多线程应用介绍
2012/12/19 Python
Python字符串详细介绍
2015/05/09 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
Python3 合并二叉树的实现
2019/09/30 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
房地产销售员的自我评价分享
2013/12/04 职场文书
教师网络培训感言
2014/03/09 职场文书
情况说明书格式范文
2014/05/06 职场文书
营销与策划实训报告
2014/11/05 职场文书
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers