0

Grails 1.3.7 を搭載したアプリにいくつかの単純な集計を実装する必要があります。1.0.0.RC3 の mongodb-plugin には、集約関数が実装されていない gmongo 0.9.1 が同梱されています。

どうすれば問題を解決できますか? java-mongo API を直接呼び出すためのフックはありますか、それとも集約を可能にする他のプラグイン リリースがあるのでしょうか?

ティア

4

4 に答える 4

1

Mongo 集約 API は 2.1 hereから存在しているようです。おそらく、ライブラリをアップグレードする必要があるかもしれません。これは、低レベルのAPIへのアクセスについて話しているmongodbプラグインのドキュメントです。Grails 1.3.7の場合、Grails アプリケーションに最新の mongo ライブラリを追加する方法の詳細については、このブログを参照してください。この投稿には同じ問題があるようです。

それが役に立てば幸い。

于 2013-07-28T11:23:48.130 に答える
0

まぁ、既存のgmongo/mongo-GORMでは無理そうです。バージョンの衝突が多すぎます。異なる mongo Java ドライバー、異なる groovy バージョンなどです。多くの ClassNotFoundExceptions などを見ました。

幸いなことに、現時点では集計機能は必要ないので、待ってから grails 2.x と mongo-GORM 1.3++ にアップグレードします。

于 2013-08-10T20:28:35.027 に答える
0

集約は GMongo 1.0 以降でのみ機能します。

于 2013-08-01T16:21:17.750 に答える
0

それで、私はそれを作りました!

少量の流血で、gmongo 0.9.1 / mongodb 1.0.0.RC3 / Grails 1.3.7 で集計を使用する方法を見つけました!

方法:

  1. mongo-java-driver を新しいバージョンに置き換える必要があります (現時点では最新の 2.9.3 を使用しました)。Grails では次のようになります。

    依存関係 { コ​​ンパイル 'org.mongodb:mongo-java-driver:2.9.3' }

  2. BootStrap または私の場合は Plugin-descriptor に次の行を追加します。

    DBCollectionPatcher.PATCHED_METHODS << '集約'

  3. 集計の呼び出しは次のようになります。

    def res = Task.collection.aggregate( [ $group:[ _id:'totalTime', time:[ $sum:'$time' ] ] ], [] as DBObject ).results()

そしてそれは魅力のように機能します!

于 2013-10-16T14:30:24.103 に答える