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脚本的10个技巧(1)
Oct 09 PHP
PHP5常用函数列表(分享)
Jun 07 PHP
destoon首页调用求购供应信息的地区名称的方法
Aug 21 PHP
php中JSON的使用与转换
Jan 14 PHP
thinkPHP模型初始化实例分析
Dec 03 PHP
YII Framework框架教程之安全方案详解
Mar 14 PHP
php微信开发自定义菜单
Aug 27 PHP
PHP基于ORM方式操作MySQL数据库实例
Jun 21 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
php 多个变量指向同一个引用($b = &amp;$a)用法分析
Nov 13 PHP
PHP const定义常量及global定义全局常量实例解析
May 28 PHP
基于php解决json_encode中文UNICODE转码问题
Nov 10 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常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
js的2种继承方式详解
2014/03/04 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
浅谈javascript中的instanceof和typeof
2015/02/27 Javascript
bootstrap手风琴制作方法详解
2017/01/11 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
微信小程序如何访问公众号文章
2019/07/08 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
Python生成器(Generator)详解
2015/04/13 Python
简单讲解Python中的闭包
2015/08/11 Python
python实现class对象转换成json/字典的方法
2016/03/11 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
Python 列表理解及使用方法
2017/10/27 Python
Python实现替换文件中指定内容的方法
2018/03/19 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
英国现代家具和装饰网站:PN Home
2018/08/16 全球购物
会计电算化专业毕业生自荐信
2013/12/20 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
运动会广播稿50字
2015/08/19 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书