我有我的 JS 文件。我在顶部声明了一个变量,称为:
var aCollection = db.myCollection;
我有一个存储的 JS 过程,它接受两个参数。要使用的字符串“id”和“collection”。
如何传递两个参数,以及一个集合作为参数?
db.eval("runSP('32', aCollection");
如果我执行上述操作,那么我会收到一个异常,说“aCollection”不存在。
我该如何解决?
我有我的 JS 文件。我在顶部声明了一个变量,称为:
var aCollection = db.myCollection;
我有一个存储的 JS 过程,它接受两个参数。要使用的字符串“id”和“collection”。
如何传递两个参数,以及一个集合作为参数?
db.eval("runSP('32', aCollection");
如果我执行上述操作,那么我会收到一个异常,说“aCollection”不存在。
我该如何解决?
您是否尝试过只做一个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();
}
db.eval
可以接受多个参数,这些参数传递给作为第一个参数提供的函数:
db.eval(runSP, '32', aCollection);