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的错误信息
Oct 09 PHP
php模板中出现空行解决方法
Mar 08 PHP
PHP 过滤页面中的BOM(实现代码)
Jun 29 PHP
PHP实现图片裁剪、添加水印效果代码
Oct 01 PHP
php实现的RSS生成类实例
Apr 23 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
Dec 18 PHP
PHP7.1新功能之Nullable Type用法分析
Sep 26 PHP
Yii框架创建cronjob定时任务的方法分析
May 23 PHP
php+ajax实现商品对比功能示例
Apr 13 PHP
PHP常见过waf webshell以及最简单的检测方法
May 21 PHP
Smarty缓存机制实例详解【三种缓存方式】
Jul 20 PHP
在thinkphp5.0路径中实现去除index.php的方式
Oct 16 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生成静态html文件的三种方法
2013/06/18 PHP
php按字符无乱码截取中文的方法
2015/03/27 PHP
PHP实现导出带样式的Excel
2016/08/28 PHP
PHP常量及变量区别原理详解
2020/08/14 PHP
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
5 种JavaScript编码规范
2018/01/30 Javascript
实现jquery放大镜的两种方法
2018/02/22 jQuery
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
Python批量查询域名是否被注册过
2017/06/21 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
Python使用MyQR制作专属动态彩色二维码功能
2019/06/04 Python
Python Sqlalchemy如何实现select for update
2020/10/12 Python
python regex库实例用法总结
2021/01/03 Python
python Scrapy框架原理解析
2021/01/04 Python
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
银行介绍信范文
2014/01/10 职场文书
食堂标语大全
2014/06/11 职场文书
运动会加油稿20字
2014/11/15 职场文书
2014年妇幼卫生工作总结
2014/12/09 职场文书
加强党性修养心得体会
2016/01/21 职场文书
查看nginx配置文件路径和资源文件路径的方法
2021/03/31 Servers
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL