0

$ where式で再帰を使用したいのですが、以下のコードは機能しません。私はどこが間違っていますか?ありがとう!)。

$code = new MongoCode('

function foo(bar) {
   if (bar.catId == 100) {
      return true;
   } else {
     if (bar.child) {
        foo(bar.child);
     }
   }

}

foo(this);

');

$result = $db->categories->find(
    array(
        '$where' => $code
    )
)->count();
4

1 に答える 1

0

この種のサーバー側のコード実行は本当に使いたくありません。JavaScript$where句の評価は、重大なパフォーマンス ブロッカーです。

可能であれば、代わりに組み込み演算子を使用する必要があります。

この場合、$orの方が適しています。

$result = $db->categories->find(
    array('$or' => array(
            array("catId" => 100),
            array("child.catId" => 100)
        )
    )
);
于 2012-09-13T06:52:37.877 に答える