MongoDB $where recursion


MongoDB $where recursion

我想在$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();

您真的不想使用这种服务器端代码执行;JavaScript$where子句的评估是一个严重的性能障碍。

您应该尽可能使用内置运算符。

在这种情况下,$or更合适:

$result = $db->categories->find(
    array('$or' => array(
            array("catId" => 100),
            array("child.catId" => 100)
        )
    )
);