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在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
Aug 03 PHP
使用PHP遍历文件夹与子目录的函数代码
Sep 26 PHP
php实现监听事件
Nov 06 PHP
php共享内存段示例分享
Jan 20 PHP
php数组去重复数据示例
Feb 25 PHP
cakephp打印sql语句的方法
Feb 13 PHP
php实现网站文件批量压缩下载功能
Oct 28 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
Jul 15 PHP
php解决和避免form表单重复提交的几种方法
Aug 31 PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 PHP
php中用unset销毁变量并释放内存
May 10 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
Mar 09 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中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
event对象的方法 兼容多浏览器
2009/06/27 Javascript
限制文本框输入N个字符的js代码
2010/05/13 Javascript
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
AngularJS之自定义服务详解(factory、service、provider)
2017/04/14 Javascript
jquery仿京东商品放大浏览页面
2017/06/06 jQuery
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
vue组件之间数据传递的方法实例分析
2019/02/12 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
Python 常用的安装Module方式汇总
2017/05/06 Python
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
广州品高软件.net笔面试题目
2012/04/18 面试题
Java面试题:为什么要用Java
2012/05/11 面试题
优秀护士先进事迹
2014/05/08 职场文书
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
党员个人整改措施
2014/10/24 职场文书
交通安全月活动总结
2015/05/08 职场文书
董事长致辞
2015/07/29 职场文书
MySQL 视图(View)原理解析
2021/05/19 MySQL