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
}})