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 相关文章推荐
第八节--访问方式
Nov 16 PHP
php 更新数据库中断的解决方法
Jun 05 PHP
php中常用的预定义变量小结
May 09 PHP
xml在joomla表单中的应用详解分享
Jul 19 PHP
浅谈PHP调用Webservice思路及源码分享
Jun 04 PHP
discuz目录文件资料汇总
Dec 30 PHP
Yii中Model(模型)的创建及使用方法
Dec 28 PHP
php获取当前页面完整URL地址
Dec 30 PHP
详解PHP对象的串行化与反串行化
Jan 24 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
Mar 26 PHP
PhpStorm+xdebug+postman调试技巧分享
Sep 15 PHP
PHP中strval()函数实例用法
Jun 07 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检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
thinkPHP模板引擎用法示例
2016/12/08 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
总结一些js自定义的函数
2006/08/05 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
html向js方法传递参数具体实现
2013/08/08 Javascript
使用jQuery实现的掷色子游戏动画效果
2014/03/14 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
js滑动提示效果代码分享
2016/03/10 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
VUE实现日历组件功能
2017/03/13 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
vuex存储token示例
2019/11/11 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
Python完全新手教程
2007/02/08 Python
python pickle 和 shelve模块的用法
2013/09/16 Python
Python列表生成器的循环技巧分享
2015/03/06 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
2014年高三毕业生自我评价
2014/01/11 职场文书
家长评语大全
2014/01/22 职场文书
国际经济与贸易专业大学生职业规划书
2014/03/01 职场文书
迎新晚会主持词
2014/03/24 职场文书
房产继承公证书
2014/04/09 职场文书
小学数学教师研修日志
2015/11/13 职场文书
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL