1

我有我的 JS 文件。我在顶部声明了一个变量,称为:

var aCollection = db.myCollection;

我有一个存储的 JS 过程,它接受两个参数。要使用的字符串“id”和“collection”。

如何传递两个参数,以及一个集合作为参数?

db.eval("runSP('32', aCollection");

如果我执行上述操作,那么我会收到一个异常,说“aCollection”不存在。

我该如何解决?

4

2 回答 2

2

您是否尝试过只做一个javascript concat?

db.eval("runSP('32', '"+aCollection+"')"(;

对集合变量与字符串的连接进行完整性检查:

> use test
switched to db test
> show collections
system.indexes
system.js
> var aCollection = db.system.js;
> print ("foo" + aCollection + "bar");
footest.system.jsbar

您的函数将接收集合的字符串名称。如果这就是您所期望的所有功能,那么您很好。如果您需要在 javascript 函数中解析集合,可以执行以下操作:

function runSP(numberVal, aCollection) {
    var coll = db[aCollection];
    coll.find();
}
于 2012-07-17T03:58:28.637 回答
0

db.eval可以接受多个参数,这些参数传递给作为第一个参数提供的函数:

db.eval(runSP, '32', aCollection);
于 2012-07-17T04:39:22.893 回答