0

イベントを表す何百万ものドキュメントを含む mongodb データベースがあります。各ドキュメントにはタイムスタンプが付けられます。イベント間の経過を評価したい。長い時間は、短い時間よりも重要です。これを効率的に行うにはどうすればよいでしょうか。

4

2 に答える 2

0

次のコードを機能させることができました。

db.main.find()
    .forEach(function(doc){
        //print('got1 id: ' + doc._id);
        db.main.find({'_id': {$gt: doc._id}, user: doc.user})
               .sort({'_id': 1})
               .limit(1)
               .forEach(function(doc2){
                    //print('got2 id: ' + doc2._id);
                    print(doc._id + ': ' + (ISODate(doc2.startT).getTime() - ISODate(doc.startT).getTime()));
                })
        }
    );

これを解決する他の方法があるかもしれませんが、私は学ぶことがたくさんあるので興味があります。

于 2013-02-16T21:44:53.843 に答える
0

簡単に言えば、これはおそらくクエリを使用して計算できるものではないということです。このタグは、これを計算するためのクエリを探している可能性があることを示唆していますが、それが可能になるとは思いません。

また、map reduce のようなものがここでも機能するようには思えません。

すべての単一イベント間で計算された差異が文字通り必要な場合は、おそらく、それらの値を処理して結果をどこかに保存する必要があります。または、新しいイベントを挿入するたびに事前に計算して、どこかに保存することもできます。

とにかく、独自のアジェンダでそれを計算し、結果をどこかに保存する何かを書く必要があるように思えます。

于 2013-02-15T04:59:39.740 に答える