1

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

1 に答える 1