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 配置open_basedir 让各虚拟站点独立运行
Nov 12 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
Dec 18 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
May 13 PHP
PHP扩展CURL的用法详解
Jun 20 PHP
用 Composer构建自己的 PHP 框架之基础准备
Oct 30 PHP
学习php设计模式 php实现桥梁模式(bridge)
Dec 07 PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 PHP
PHP访问数据库集群的方法小结
Mar 14 PHP
php基于jquery的ajax技术传递json数据简单实例
Apr 15 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
Apr 10 PHP
PHP8.0新功能之Match表达式的使用
Jul 19 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
php笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
浅析php单例模式
2014/11/25 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
2015/05/09 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
Laravel框架表单验证操作实例分析
2019/09/30 PHP
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
javascript 闭包疑问
2010/12/30 Javascript
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
jQuery中trigger()与bind()用法分析
2015/12/18 Javascript
关于JavaScript作用域你想知道的一切
2016/02/04 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
解决layUI的页面显示不全的问题
2019/09/20 Javascript
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
Python基于pygame实现的弹力球效果(附源码)
2015/11/11 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
python绘图模块之利用turtle画图
2021/02/12 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
2021/02/22 Python
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
支教自我鉴定
2014/01/18 职场文书
交通事故协议书范文
2014/04/16 职场文书
大学生村官演讲稿
2014/04/25 职场文书
名人演讲稿范文
2014/09/16 职场文书
行政文员岗位职责
2015/02/04 职场文书
课外活动总结
2015/02/04 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
小学英语教学反思范文
2016/02/15 职场文书
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技