1

光沢のあるアプリのデータを保存するためにmongodbを使用しています。mongo.update光沢のあるアプリで呼び出したときに 1 つの操作が機能しないことを除いて、正常に機能しているようです。クレイジーなことは、Rで手動で使用すると、すべて正常に動作することです。

そのため、rmongodb ですべての「エラー取得」機能を試してみましたが、更新を試みた後、mongo.get.err光沢のあるアプリで実行すると「15」が返されますが、手動で実行すると「0」が返されます。このエラーの意味を説明するリストは 1 つしか見つかりませんでした ( https://jira.mongodb.org/browse/NODE-153 ) 。これは、 overflowを意味しているようです。私が見る限り、mongodb のログには何も書かれていません。

printフィードされたすべてのパラメーターを使用してデバッグを試みましmongo.updateたが、正しいデータが渡されていると確信しています。

残りは、shiny + rmongodb を使用して共謀してこの問題を作成する方法を理解することです。

私が渡している bson オブジェクトには、714.6 Kb のシリアル化されたオブジェクトが含まれています。これをオブジェクトから削除するmongo.updateと、成功します。では、正確には何が原因なのだろうか? ヒントをいただければ幸いです。これのせいで2日間ずっと髪を抜いていました...


mongodb バージョン: 2.6.3
rmongodb バージョン 1.6.53
R 開発中 (不安定) (2014-03-05 r65119)
64 ビット Linux ミント

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 に答える