使用Java从Raw查询获取MongoDB结果

时间:2012-10-25 12:14:30

标签: mongodb

我试图了解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

我怎样才能检查结果呢?

1 个答案:

答案 0 :(得分:0)

首先,Stennie认为eval()不是在MongoDB中进行连接的正确方法。

但是,要尝试回答您的问题,它会以这种方式运作:

   String f = "function(rows) { ... }";
   DB db = new Mongo("localhost", 27017).getDB("test");
   Object result = db.eval( f, 1000 );

此外,您的“加入”功能需要进行小幅修正:它应该使用findOne代替find

   s.user = db.users.findOne({id: s.user_id});