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 相关文章推荐
使用 MySQL Date/Time 类型
Mar 26 PHP
浅析十款PHP开发框架的对比
Jul 05 PHP
php实现httpclient类示例
Apr 08 PHP
php列出mysql表所有行和列的方法
Mar 13 PHP
php中JSON的使用方法
Apr 30 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
Nov 10 PHP
PHP MySql增删改查的简单实例
Jun 21 PHP
php中get_magic_quotes_gpc()函数说明
Feb 06 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 PHP
PHP执行普通shell命令流程解析
Aug 24 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
为EasyUI的Tab标签添加右键菜单的方法
2012/07/14 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
JS实现的Unicode编码转换操作示例
2017/04/28 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
详解angular路由高亮之RouterLinkActive
2018/04/28 Javascript
vue实现在线学生录入系统
2020/05/30 Javascript
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
Python科学计算环境推荐——Anaconda
2014/06/30 Python
使用python加密自己的密码
2015/08/04 Python
深入理解python try异常处理机制
2016/06/01 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
python批量从es取数据的方法(文档数超过10000)
2018/12/27 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
2019/09/15 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
电子信息科学专业自荐信
2014/01/30 职场文书
现金出纳岗位职责
2014/03/15 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
四风对照检查材料范文
2014/09/27 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
2015年父亲节寄语
2015/03/23 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
进阶篇之linux环境下安装MySQL数据库
2022/04/09 MySQL
MyBatis在注解上使用动态SQL方式(@select使用if)
2022/07/07 Java/Android