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 回答