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 相关文章推荐
php/js获取客户端mac地址的实现代码
Jul 08 PHP
php中strtotime函数用法详解
Nov 15 PHP
PHP魔术方法__GET、__SET使用实例
Nov 25 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
Jan 26 PHP
PHP处理大量表单字段的便捷方法
Feb 07 PHP
PHP+Ajax实时自动检测是否联网的方法
Jul 01 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
Aug 17 PHP
PHP Filter过滤器全面解析
Aug 09 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
详解json在php中的应用
Sep 30 PHP
基于PHP实现微信小程序客服消息功能
Aug 12 PHP
HTTP头隐藏PHP版本号实现过程解析
Dec 09 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获取数据库结果集方法(推荐)
2017/06/01 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
2013/04/26 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
javascript:void(0)的问题使用探讨
2014/04/10 Javascript
js用Date对象的setDate()函数对日期进行加减操作
2014/09/18 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
详解Angularjs中的依赖注入
2016/03/11 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
浅谈vue中数据双向绑定的实现原理
2017/09/14 Javascript
[原创]微信小程序获取网络类型的方法示例
2019/03/01 Javascript
微信小程序音乐播放器开发
2019/11/20 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
python批量提交沙箱问题实例
2014/10/08 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
Django celery异步任务实现代码示例
2020/11/26 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
博士研究生自我鉴定范文
2013/12/04 职场文书
后勤采购员岗位职责
2013/12/19 职场文书
参观接待方案
2014/03/17 职场文书
初中班级口号
2014/06/09 职场文书
工作收入证明模板
2014/10/10 职场文书
2014年医药代表工作总结
2014/11/22 职场文书
转学证明范本
2015/06/19 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA