仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1005|回复: 19
打印 上一主题 下一主题

[学习教程] PHP教程之在MongoDB中摹拟Auto Increment的php代...

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:39:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
PHP成功的插入,删除,更新数据的时候,显然,你已经距离成功指日可待了。   代码大致以下所示:
复制代码 代码以下:
<?php
function generate_auto_increment_id($namespace, array $option = array())
{
$option += array(
'init' => 1,
'step' => 1,
);
$instance = new Mongo();
$instance = $instance->selectCollection('_seq', 'seq');
$seq = $instance->db->command(array(
'findAndModify' => 'seq',
'query' => array('_id' => $namespace),
'update' => array('$inc' => array('id' => $option['step'])),
'new' => true,
));
if (isset($seq['value']['id'])) {
return $seq['value']['id'];
}
$instance->insert(array(
'_id' => $namespace,
'id' => $option['init'],
));
return $option['init'];
}
var_dump(generate_auto_increment_id('foo'));
var_dump(generate_auto_increment_id('bar', array('init' => 123)));
?>

其详细完成体例次要是使用MongoDB中findAndModify号令,只需每次往MongoDB里insert对象前生成ID赋值给_id就OK了,由于它的完成知足原子性,所以不存在并提问题。
别的申明一点,findAndModify自己供应了一个upsert参数,为true的话可以主动insert,但那样就不克不及自界说初始值了,所以文中示例没有利用upsert。
BTW,数据库“_seq”的名字以下划线开首,如许列表的时分会排在后面,更轻易分辩些。
参考:Auto Increment with MongoDB
聪明的你,显然已经逐渐的开悟了,慢慢的理解了编程的概念,那么祝贺你,你已经迈出了成功的第一步。
老尸 该用户已被删除
沙发
发表于 2015-2-9 15:52:16 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
山那边是海 该用户已被删除
板凳
发表于 2015-2-27 09:07:25 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
莫相离 该用户已被删除
地板
发表于 2015-3-3 20:28:36 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
乐观 该用户已被删除
5#
发表于 2015-3-10 02:43:53 | 只看该作者
实践是检验自己会不会的真理。
不帅 该用户已被删除
6#
发表于 2015-3-12 23:58:10 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
若相依 该用户已被删除
7#
发表于 2015-3-18 20:48:41 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
因胸联盟 该用户已被删除
8#
发表于 2015-3-22 01:09:26 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
9#
发表于 2015-3-27 19:09:43 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
分手快乐 该用户已被删除
10#
发表于 2015-3-31 10:31:08 | 只看该作者
当然这种网站的会员费就几十块钱。
第二个灵魂 该用户已被删除
11#
发表于 2015-4-1 20:09:59 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
若天明 该用户已被删除
12#
发表于 2015-4-6 09:01:53 | 只看该作者
基础有没有对学习php没有太大区别,关键是兴趣。
再现理想 该用户已被删除
13#
发表于 2015-4-6 17:01:58 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
简单生活 该用户已被删除
14#
发表于 2015-4-8 07:49:44 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
海妖 该用户已被删除
15#
发表于 2015-4-10 00:00:48 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
只想知道 该用户已被删除
16#
发表于 2015-4-14 07:36:02 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
精灵巫婆 该用户已被删除
17#
发表于 2015-4-17 12:51:42 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
金色的骷髅 该用户已被删除
18#
发表于 2015-4-23 06:18:59 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
小魔女 该用户已被删除
19#
发表于 2015-4-29 02:19:06 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
蒙在股里 该用户已被删除
20#
发表于 2015-5-9 01:15:31 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 13:11

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表