1

我正在使用 mongodb 为闪亮的应用程序保存一些数据。它似乎工作正常,只是mongo.update当我在闪亮的应用程序中调用它时一个操作不起作用。疯狂的是,如果我在 R 中手动使用它,一切正常。

因此,我尝试了 rmongodb 中的所有“错误获取”功能,mongo.get.err如果在闪亮的应用程序中运行,尝试更新返回“15”,但手动运行时返回“0”。我只能找到一个列表来解释这个错误的含义(https://jira.mongodb.org/browse/NODE-153),它似乎意味着溢出。据我所知,mongodb 日志根本没有说什么。

我尝试使用print输入的所有参数进行调试,mongo.update我确信它传递了正确的数据。

所以剩下的就是弄清楚使用 shiny + rmongodb 是如何串通起来制造这个问题的。

我传递的 bson 对象包含一个 714.6 Kb 的序列化对象。如果我从对象中删除它mongo.update是成功的。那么究竟是什么原因造成的呢?任何提示表示赞赏。因为这两天我一直在拔头发...


mongodb 版本:2.6.3
rmongodb 版本 1.6.53
R 开发中(不稳定)(2014-03-05 r65119)
64 位 linux mint

4

2 回答 2

2

“讨论”总结: boot函数将整个工作环境保存在输出中(大概是为了多线程的目的)。这显然意味着当对象被序列化时,环境中的所有变量都会被序列化。由于这个原因,对象可能会变得非常大,而 rmongodb 显然无法处理。

我能想出的唯一解决方案是删除有问题的引用: loess_boot$statistic <- NULL

无论如何可能不需要那部分,但我想应该可以用 refhook 参数做一些更聪明的事情来序列化。

我仍然想知道为什么 mongodb 无法处理写入对象。尺寸限制应该是多少?

于 2014-07-24T09:17:31.680 回答
0

看起来很奇怪。我认为由于闪亮的反应式编程,mongo db 连接存在问题。

在执行命令之前是否测试工作连接?

  if (!mongo.is.connected(mongo)) {
   ...
  }
于 2014-07-14T16:15:16.100 回答