- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
mongodb 是 v4.0.5
Perl 是 5.26.3
MongoDB Perl 驱动程序是 2.0.3
这个 Data::Dumper 输出显示是什么让我发疯
INFO - $VAR1 = [
'275369249826930689 1',
{
'conf' => {
'param' => 'argument'
},
'id' => '275369249826930689',
'lastmsg' => '604195211232139552',
'_id' => bless( {
'oid' => ']:\',&�h�GeR'
}, 'BSON::OID' )
}
];
352832438449209345 275369249826930689
INFO - $VAR1 = [
'275369249826930689 2'
];
第二个 INFO - $VAR1 应该显示与第一个相同的内容。这是原始代码,我已将其(见下文)分解以找出罪魁祸首。
ddump(["$userid 1",
$c_identities->find_one({
channel => 'chan1',
id => $userid,
})
]);
my @filtered = reverse
grep { $_->{author}->{id} == $userid } @{$answers};
ddump(["$userid 2",
$c_identities->find_one({
channel => 'chan1',
id => $userid,
})
]);
ddump 只是 Data::Dumper 的包装器。如果我删除“my @filtered”行,第二个查找将再次返回预期结果(一个 MongoDB 文档)。 $answers 只是哈希表的列表引用 - 没有对象 - 来自某些 API,与 MongoDB 完全无关。
所以我分解了“反向 grep”代码,看看罪魁祸首在哪里。说的是你在上面的倾销者之间看到的两个数字。这是我能做的,从第二个 find_one 得到答案:
for my $answer (@{$answers}) {
say $answer->{author}->{id}, ' ', $userid;
push @filtered, $answer;
}
只要我这样做,第二个 find_one 就会提供结果。但是,如果我这样做:
for my $answer (@{$answers}) {
say $answer->{author}->{id}, ' ', $userid;
if ($answer->{author}->{id} == $userid) {
}
push @filtered, $answer;
}
我从上面得到输出(其中第二个转储程序没有从 find_one 返回。这太疯狂了 - 包含数字 eq 的 if 子句导致第二个 find_one 失败!这也是预期代码中的 grep 主体。
这是怎么回事?这对 MongoDB 方法有何影响?
最佳答案
使用数字比较运算符 ==
将值数值化,但它可能太大而无法放入整数并变成 float 。当序列化为 JSON 或类似格式时,它也可以只是变成一个整数并丢失双引号。使用 eq
而不是 ==
保持值不变。
关于MongoDB/珀尔 : find_one doesn't return data after unrelated code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57214778/
我遇到一个问题,我从列表(list1)中检索元素,并修改元素中的一个参数,然后将其添加到另一个列表(list2)。当我对list1中的最后一项执行此操作时,有时会修改list2中元素的参数。 这个函数
我正在学习PHP和MySql,并通过使用CMS创建自己的简单BLOG来学习它。不过我在这里遇到了问题。 我有一个名为 edit_cat.php 的页面。这是为了编辑之前创建的类别。 我的数据库表是这样
如果我有这样的类结构: class A { public: int a; void funcA(){a = 0;} }; class B { public: int b;
我在使用协议(protocol)从另一个类获取一些数据时遇到问题。我看不到如何在不连接到需要数据的 MVC 的类中设置委托(delegate)。我在 MVC 中创建协议(protocol)并在包含我需
我有两个存储库:Market 和 Android。当我将 Android merge 到 Market 时,请使用以下步骤: cd market git remote add android ../a
这个问题在这里已经有了答案: Typescript Function with Generic Return Type (2 个回答) 4 个月前关闭。 以下代码抛出错误: 'T' could be
以下是我为构建 repo 和 subrepos 所采取的步骤。 一切都托管在 Bitbucket 上。 根据最佳实践,创建了一个骨架存储库来保存所有子存储库。克隆到我的机器上。 将主项目克隆为 sub
我有以下查询可以得到我想要的结果: int associatedId = 123; MyObject alias = null; var subQuery = QueryOver.Of() .
假设我有两个表 GOOD 和 BAD 存储小部件生产的记录。我的表格看起来像这样 Widget Good ---------------- Widget A Y Widget A
有一个存储库 (GameFramework),我想将其用作另一个存储库中的子存储库。 我创建了一个新的主存储库,然后将 GameFramework 克隆到该存储库中,并将 GameFramework
我正在尝试启动一个模式,但是,在当前设置下,组件没有父子关系并且完全不相关。有什么办法吗?我知道理想的情况是将它们置于亲子关系中,但这种情况要求它们不相关。我需要 App.js 中的两个按钮才能启动模
经过一些研究,对于如何让子进程了解父进程在 Windows 下已死亡/崩溃/退出这可以使子进程在无人值守的情况下运行,没有明确的答案。有一些建议如下: 职位:Python: how to kill c
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我正在阅读 Bjarne Stroustrup 的“The C++ Programming Language”来学习 C++,并遇到以下段落: The static_cast operator con
我已经安装了GitHub Desktop和 Windows 机器上的 Git。我有一个 GitHub 帐户并创建了一个虚拟存储库。 当我打算通过 Git Bash 上传我的包裹时命令行,它失败并出现错
有没有一种优雅的方法可以从 32 位编译的应用程序启动 64 位进程? 问题是我需要在 32 位 Sparc V8 模式下编译一部分。另一部分是为更快的 64 位环境编写的(不模拟 64 位乘法)。我
我再也找不到我的 Eclipse IDE 中曾经存在的非常方便的“关闭无关项目”功能。 出现这个对话框选项有什么条件吗?我已经安装了 Eclipse Maven 插件,这对选项有什么影响吗? 谢谢。
假设我有三个表:用户、测验和问题。每个都有一个 id(整数)字段和一个created_at(日期时间)字段。我希望能够将所有这些表放在一起,按created_at desc排序,然后获取记录的“页面”
我们目前正面临一些数据库 (postgres) 问题,并且已经到了我们所拥有的信息无法带来新见解的地步。希望有人可以帮助我们。 一些上下文 我们正在开发的工具基本上是一个通用的数据库系统。因此用户可以
在 MigLayout 容器中使用“相关”和“不相关”间隙值是一个很好的功能,但我想更改它们的默认值。怎么做?我不喜欢使用明确的数字,例如“换行15px”。 “wrap related”更加灵活和可读
我是一名优秀的程序员,十分优秀!