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 数组遍历顺序理解
Sep 09 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
Jun 28 PHP
PHP将XML转数组过程详解
Nov 13 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
Apr 26 PHP
详解PHP中的PDO类
Jul 06 PHP
php阿拉伯数字转中文人民币大写
Dec 21 PHP
PHP使用递归算法无限遍历数组示例
Jan 13 PHP
彻底搞懂PHP 变量结构体
Oct 11 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
May 21 PHP
php框架CodeIgniter主从数据库配置方法分析
May 25 PHP
thinkPHP中U方法加密传递参数功能示例
May 29 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 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获取当前页面URL函数实例
2014/10/22 PHP
PHP 7.0新增加的特性介绍
2017/06/08 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
2020/04/26 PHP
PHP接入支付宝接口失效流程详解
2020/11/10 PHP
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
javascript正则表达式总结
2016/02/29 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
ES6 let和const定义变量与常量的应用实例分析
2019/06/27 Javascript
JavaScript实现京东放大镜效果
2019/12/03 Javascript
[06:24]DOTA2 2015国际邀请赛中国区预选赛第二日TOP10
2015/05/27 DOTA
python实现simhash算法实例
2014/04/25 Python
Python 字符串换行的多种方式
2018/09/06 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
python/Matplotlib绘制复变函数图像教程
2019/11/21 Python
python函数不定长参数使用方法解析
2019/12/14 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
银行领导证婚词
2014/01/11 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
学生干部培训方案
2014/06/12 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
技术入股协议书
2016/03/22 职场文书
python缺失值的解决方法总结
2021/06/09 Python
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL
Go语言安装并操作redis的go-redis库
2022/04/14 Golang