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 回答