0

私は、MongoDBが従来のRDBMSと比較してどれだけ速いかを感じ取ろうとしています。この目的のために、私はJavaを使用して、別のオブジェクトを埋め込んだ後にオブジェクトを返すMongoDB関数を定義することにより、従来のSQL結合の結果を取得しようとしています。

s_with_user = function(rows){
  var result=[]
  db.subscriptions.find().limit(rows).forEach( function(s) { 
    s.user= db.users.find({id: s.user_id});
    result.push( s );
  });
  return result;
}

次に、私は使用します:

DB db = new Mongo("localhost", 27017).getDB("test");
Object result = db.eval("s_with_user(1000)");

最後のステートメントにかかった時間を測定すると、MongoDBがコマンドを実行し、必要なデータを評価していると確信しています。ただし、resultオブジェクトは常にnullです。

結果を検査できるような方法でこれを行うにはどうすればよいですか?

4

1 に答える 1

0

まず第一に、Stennie は、eval() が MongoDB で結合を行う正しい方法ではないという点で正しいです。

ただし、質問に答えようとすると、次のようになります。

   文字列 f = "関数 (行) { ... }";
   DB db = new Mongo("localhost", 27017).getDB("test");
   オブジェクト結果 = db.eval( f, 1000 );

また、「結合」関数には小さな修正が必要です。findOne代わりにfind次のものを使用する必要があります。

   s.user = db.users.findOne({id: s.user_id});   
于 2012-10-25T15:02:02.917 に答える