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