当前位置:首页 > 日记 > 正文

整数规划问题和对策当PHP运行MongoDB

整数规划问题和对策当PHP运行MongoDB
MongoDB本身具有两个整数类型,即32位整数和64位整数,但PHP驱动的旧版本没有是否操作系统是32位或64位的事,所有的整数被视为32位整数,导致64位整数被截断。为了解决兼容性的前提这一问题,PHP驱动的新版本加入了mongo.native-long选项,为了处理整数在64位操作系统的64位。如果你有兴趣,你可以参考一下:64位整数在MongoDB。

那么PHP驱动程序真的能完全解决整数问题吗不!在处理组操作时,也有bug:

为了说明这个问题,我们首先生成一些测试数据:
复制代码代码如下所示:
< PHP
ini_set('mongo。native_long ',1);
Mongo()美元=新实例;
实例=美元美元实例-> selectcollection(测试,测试);
($ i = 0;$ i < 10;$ + +){
$实例>插入(数组)
group_id ' =兰特(1, 5),
计数=兰德(1, 5),
));
}
>

让我们用这组操作数的计算的基础上group_id分组。
复制代码代码如下所示:
< PHP
ini_set('mongo。native_long ',1);
Mongo()美元=新实例;
实例=美元美元实例-> selectcollection(测试,测试);
$键=阵列('group_id ' = 1);
初始=阵列(count美元= 0);
美元=
功能(obj,沪指){
prev.count = obj.count;
}
';
$ $实例>组($键,初始值,$减少);
var_dump($结果);
>

结果与预期不同。计数没有实现累计,但已成为{对象}。目前,如果有必要进行集团化操作,有两种方法可以缓解这一问题。
复制代码代码如下所示:
ini_set('mongo。native_long ',0);
初始=阵列(count美元=(浮动)0);

这两种方法都是临时解的临时解。由于在php驱动程序组中出现了问题,我们将绕过它并使用其他方法来实现相同的功能。这边是MapReduce:
复制代码代码如下所示:
< PHP
ini_set('mongo。native_long ',1);
Mongo()美元=新实例;
实例=美元美元实例-> selectdb(测试);
$ map =
函数(){
(this.group_id发出,这个数。);
}
';
美元=
函数(键,值){
var总和= 0;
对于(值中的var索引){
总和=值{索引};
}
收起回复;
}
';
元实例命令(数组)
MapReduce= >测试,
map= $ map,
减少=减少$
));
结果= iterator_to_array美元($实例-> { { } } $结果'result->找到());
var_dump($结果);
>
把大象放进冰箱需要三步,而使用MapReduce只需要两步的地图和减少。这是一个PDF文档,生动地说明了mysql中的MapReduce与组之间的对应关系。

SQL MongoDB

此外,有大量的信息供参考,如:MongoDB聚合三:降低基础地图。

描述:软件版本是MongoDB(1.6.5)、PECL Mongo(1.1.4)不同的版本可能是不同的。

相关文章

如何win7分区,win7硬盘分区技术(图文

如何win7分区,win7硬盘分区技术(图文

硬盘分区,图文,技术,电脑软件,点评:本教程介绍了在win7系统下硬盘分区的方法 win7系统没有重装系统的硬盘分区。 右键单击我的计算机选择管理,出现在管理界面图一下面。 图形磁盘管理接口 图二选择压缩卷准备分 图三设置新分区的大小 在四个…

MySQL查询的说明介绍

MySQL查询的说明介绍

查询,电脑软件,MySQL,子查询是一个查询语句嵌套在另一个查询语句 内部查询语句的查询结果可以为外部查询语句提供查询条件。 因为在特定的情况下,查询语句的条件需要另一个查询才能得到 参考表:雇员 参考表:部门 与关键字查询 复制代码代…

oralce数据导入(系统出现。proc_aud

oralce数据导入(系统出现。proc_aud

数据导入,处理方法,系统,电脑软件,oralce,在B数据库中将用户名的用户数据导出给用户名后,用户名用户在执行表中执行数据查询时出现下列问题。 ora-06550:第一行,第七列: pls-00201:必须申报identifier'system proc_audit。 ora-06550:第一行,第七…

如何在Word2003剪贴板任务窗格中的

如何在Word2003剪贴板任务窗格中的

剪贴板,窗格,如何在,电脑软件,当我们用文字来书写、书写手稿和制作文件时,我们不可避免地会输入许多重复的句子和词。如果我们遇到这样的情况,我们必须每次都重复吗有什么好的方法或功能可以简化这一步吗 有方法。Word2003已经为方便用户完成…

百度收购PPS视频与腾讯视频

百度收购PPS视频与腾讯视频

收购,百度,腾讯,视频,电脑软件,许多互联网用户喜欢使用PPS播放器观看电视剧或电影。我们知道现在PPS将被百度收购。 据悉,百度收购PPS之间的3亿美元和4美元,这被认为是在视频行业的第二大收购。百度的视频服务主要是爱奇艺。然而,根据百度201…

oracle数据库自动存储管理安装配置

oracle数据库自动存储管理安装配置

数据库,安装配置,存储管理,电脑软件,oracle,这带来了很多好处,但也需要学习一些新的概念、命令、使用和管理任务。因此,在投入生产系统之前,先看看它的解决方法、管理方法以及对它的正面和负面评价。 为什么要创造它 回答这个问题的最好方法是…

之间设置的不同,array_splicePHP数

之间设置的不同,array_splicePHP数

元素,设置,组中,电脑软件,array_splicePHP,如果你想删除数组中的一个元素,你可以使用不直接,但数组的索引不会被重新安排。 $ ARR =阵列(A,B,C,D); unset($ ARR { 1 }); print_r($ ARR); > 结果是: 数组({ 0 } { 2 } = 3) 那么如何填补缺失的元素,重新排列…

介绍Windows8.1更新1的新特点和改

介绍Windows8.1更新1的新特点和改

电脑软件,评论:Windows 8.1更新1几乎完成了,团队的下一个工作应该只剩下bug修复和微调。 Windows 8.1 Update 1几乎是完整的,与团队的下一个工作应该只剩下的bug修复和微调。台式机和平板电脑用户,1的更新带来了许多新的特点和变化,这个视频是给…

vsftpd的配置(中)

vsftpd的配置(中)

配置,电脑软件,vsftpd,审查:4。ip监控与连接控制 有两个启动参数对vsftpd独立模式下工作(独立): 听=是/否 listen_ipv6 =是的/没有 第一个已经提到过,第二个是在IPv6中使用的。 4。ip监控与连接控制 有两个启动参数对vsftpd独立模式下工作(独立): …

padexe是padexe.exe-使用

padexe是padexe.exe-使用

电脑软件,padexe,exe,评论:详细的介绍了PadExe.exe进程 进程文件:padexe或PadExe.exe 过程名称:东芝触摸屏模块 过程类别:安全风险的过程 英文描述: padexe.exe是一个过程,安装在东芝笔记本电脑触控板装置和提供额外的配置选项。这个程序是系统…

linux引导命令

linux引导命令

命令,电脑软件,linux,评论:Linux Apache启动命令,为什么Apache不能启动或Apache引导无法访问错误:无法识别的服务 -------------------------------------------------------------------------------- PHP编译Apache不能启动,Apache httpd如何…

在SNMP监控之后,大量从UDP接收到的S

在SNMP监控之后,大量从UDP接收到的S

电脑软件,SNMP,UDP,点评:Linux服务器可以轻松地打开snmpd监测,但管理员经常检查日志会发现,默认情况下,/无功/日志/消息将产生大量snmpd日志。 1月9日我11:54:08 snmpd { 2193 }:连接UDP:{ 60.195.249.83 }:37412 1月9日我11:54:08 snmpd { 2193 …