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 相关文章推荐
source.php查看源文件
Dec 09 PHP
模拟flock实现文件锁定
Feb 14 PHP
php下删除字符串中HTML标签的函数
Aug 27 PHP
深入extjs与php参数交互的详解
Jun 25 PHP
PHP连接局域网MYSQL数据库的简单实例
Aug 26 PHP
教你如何快捷的使用cmd访问mysql小技巧
May 26 PHP
PHP合并数组+号和array_merge的区别
Jun 25 PHP
PHP实现递归复制整个文件夹的类实例
Aug 03 PHP
详解js异步文件加载器
Jan 24 PHP
php使用file函数、fseek函数读取大文件效率对比分析
Nov 04 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 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经典面试题集锦
2015/03/19 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
PHP生成图片验证码功能示例
2017/01/12 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
js中eval详解
2012/03/30 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
理解JS事件循环
2016/01/07 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
Vue3新特性之在Composition API中使用CSS Modules
2020/07/13 Javascript
[00:31]DOTA2上海特级锦标赛 Fnatic战队宣传片
2016/03/04 DOTA
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
Python中正则表达式详解
2017/05/17 Python
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
Cinque网上商店:德国服装品牌
2019/03/17 全球购物
数控技术与应用毕业生自荐信
2013/09/24 职场文书
实习生个人找工作的自我评价
2013/10/30 职场文书
医学院毕业生自荐信
2013/11/08 职场文书
劳资人员岗位职责
2013/12/19 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
财产保全担保书范文
2014/04/01 职场文书
妇联主席先进事迹
2014/05/18 职场文书
会议欢迎词范文
2015/01/27 职场文书