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分页实例代码分享
Jul 28 PHP
php XMLWriter类的简单示例代码(RSS输出)
Sep 30 PHP
探讨捕获php错误信息方法的详解
Jun 09 PHP
分享PHP header函数使用教程
Sep 05 PHP
ThinkPHP之R方法实例详解
Jun 20 PHP
php简单smarty入门程序实例
Jun 11 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
Yii实现文章列表置顶功能示例
Oct 18 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
Jul 03 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
Aug 10 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 PHP
phpstorm激活码2020附使用详细教程
Sep 25 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实现jQuery扩展函数
2009/10/30 PHP
PHP面向对象概念
2011/11/06 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
2013/01/19 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
2018/12/20 PHP
Javascript验证方法大全
2015/09/21 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
JS实现图片放大缩小的方法
2017/02/15 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
小议Python中自定义函数的可变参数的使用及注意点
2016/06/21 Python
python中的常量和变量代码详解
2018/07/25 Python
python 3.7.0 安装配置方法图文教程
2018/08/27 Python
python实现梯度下降法
2020/03/24 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
Html5百叶窗效果的示例代码
2017/12/11 HTML / CSS
Lookfantastic挪威官网:英国知名美妆购物网站
2017/07/26 全球购物
美国购买隐形眼镜网站:Lenses For Less
2020/07/05 全球购物
strstr()的简单实现
2013/09/26 面试题
大专生毕业的自我评价
2014/02/06 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
代理人委托书
2014/09/16 职场文书
教师节寄语2015
2015/03/23 职场文书
施工安全协议书
2016/03/22 职场文书
golang中的并发和并行
2021/05/08 Golang
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS