带参数的MongoDB eval()

时间:2013-06-05 14:57:48

标签: mongodb eval

尝试将evalargs参数一起使用时,我得到了一个奇怪的结果。以下工作正常:

> db.eval(function(coll) {
  var res = db[coll].find({});
  return(res.count());
}, ['KenColl'])
1438

但是当我传递第二个参数时,即使我不使用它,我总是得到空的结果:

> db.eval(function(coll, query) {
  var res = db[coll].find({});
  return(res.count());
}, ['KenColl', {}])
0

我误解了evalargs的某些内容吗?我正在运行mongodMongoDB shell的版本2.4.3。

1 个答案:

答案 0 :(得分:1)

对于db.eval,你不应该将参数作为数组传递,只需将它们传递给函数。

以下示例应该有效:

db.eval(function(coll, query) {
  var res = db[coll].find(query);
  return(res.count());
}, 'KenColl', {})

P.S。您的第一个示例仅适用于javascript db['KenColl'] === db[['KenColl']]