我db.system.js.save
用来在服务器上保存 js 函数。
到目前为止我写了这个脚本
function () {
cursor = db.MyCollection.find({_id: {$in:[arguments]}})
^ this does not work
while(cursor.hasNext()){print(cursor.next())};
}
我用以下参数调用它findAllDocuments(ObjectId("544a30c80c80d5809180b"),<more objects>);
,但它不起作用。
我必须以arguments
不同的方式称呼它吗?因为arguments[0]
正在工作例如。
编辑:为了澄清arguments
是javascript函数的参数。
findAllDocuments(ObjectId("544a30c80c80d5809180b"),ObjectId("544a30c80c80d5809180b"), <and more objectIds>);
如果我像这样使用它,它确实可以工作,但参数长度可以是可变的。
function () {
cursor = db.MyCollection.find({_id: {$in:[arguments[0],arguments[1]}})
^ this does work
while(cursor.hasNext()){print(cursor.next())};
}
编辑2:
如何在 $ref 中正确使用 $in?
cursor = db.MyCollection.find({"trainer" : {
"$ref" : "Contact",
"$id" : {$in : [ObjectId("556d901118bfd4901e2a3833")]}
^it executes successfully, but does not find anything
}})