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
php上传文件的增强函数
Jul 21 PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
Oct 08 PHP
PHP Cookie的使用教程详解
Jun 03 PHP
探讨PHP删除文件夹的三种方法
Jun 09 PHP
php引用传值实例详解学习
Nov 06 PHP
50个PHP程序性能优化的方法
Jun 02 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
Mar 18 PHP
PHP远程调试之XDEBUG
Dec 29 PHP
PHP判断JSON对象是否存在的方法(推荐)
Jul 06 PHP
PHP实现用户登录的案例代码
May 10 PHP
thinkPHP实现基于ajax的评论回复功能
Jun 22 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数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
PHP实现验证码校验功能
2017/11/16 PHP
jquery中ajax学习笔记4
2011/10/16 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
Node.js的文件权限及读写flag详解
2016/10/11 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
VUE2.0中Jsonp的使用方法
2018/05/22 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
JS实现简易图片自动轮播
2020/10/16 Javascript
Python数据类型学习笔记
2016/01/13 Python
python模块之paramiko实例代码
2018/01/31 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
Python  unittest单元测试框架的使用
2018/09/08 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
Django中提示消息messages的设置方式
2019/11/15 Python
python 实现按对象传值
2019/12/26 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
基于HTML5 Canvas:字符串,路径,背景,图片的详解
2013/05/09 HTML / CSS
大学自荐信
2013/12/12 职场文书
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
秋季运动会广播稿
2014/02/22 职场文书
会计专业自荐信范文
2015/03/05 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
行政二审代理词
2015/05/25 职场文书
借钱欠条怎么写
2015/07/03 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers
Python如何让字典保持有序排列
2022/04/29 Python