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 相关文章推荐
基于文本的留言簿
Oct 09 PHP
sqlyog 中文乱码问题的设置方法
Oct 19 PHP
php 服务器调试 Zend Debugger 的安装教程
Sep 25 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
PHP时间类完整实例(非常实用)
Dec 25 PHP
Zend Framework动作助手Url用法详解
Mar 05 PHP
php短信接口代码
May 13 PHP
PHP静态成员变量
Feb 14 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
Apr 21 PHP
php DES加密算法实例分析
Sep 18 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
Sep 23 PHP
php去除deprecated的实例方法
Nov 17 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
短波问题解答
2021/02/28 无线电
解析php如何将日志写进syslog
2013/06/28 PHP
PHP获取数组最后一个值的2种方法
2015/01/21 PHP
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
JavaScript操作 url 中 search 部分方法函数
2016/06/15 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
用Python中的字典来处理索引统计的方法
2015/05/05 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
PUMA澳大利亚官方网站:德国运动品牌
2018/10/19 全球购物
查找廉价航班和发现新目的地:Kiwi.com
2019/02/25 全球购物
MySQL面试题目集锦
2016/04/14 面试题
高三学生评语大全
2014/04/25 职场文书
自愿解除劳动合同协议书
2014/09/11 职场文书
出纳岗位职责
2015/01/31 职场文书
小班下学期个人总结
2015/02/12 职场文书
个人工作能力自我评价
2015/03/05 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python