3

我正在为使用 mongo 进行汽车存储的汽车网站构建一个非常复杂的搜索公式。我发现其中的大部分内容都非常简单。它目前支持按车身样式、新车/二手车等进行过滤。不过,我遇到问题的地方是它默认为新车和二手车,因为它们都有单独的价格范围(计算的低和高价格基于每月付款范围)。我怎样才能使这项工作?

例如,如果它只是一辆二手车,我们将使用这个 (CodeIgniter) 代码:

$this->mongo_db->where('stock_type', 'used');
$this->mongo_db->where_between('internet_price', $amounts['bottom_amt_used'], $amounts['top_amt_used']);

我们为新车做类似的事情。单独工作很好。我如何组合这些以便我可以找到

  • IF stock_type = new, WHERE_BETWEEN(a, b)
  • 或 IF stock_type = false, WHERE_BETWEEN(c, d)

并将其与其他过滤器结合使用,例如 WHERE body_style IN (...)?

我们正在使用 CodeIgniter 和 Alex Bilbie 的 mongodb 库,这可能会使事情变得复杂,我在想。

4

1 回答 1

0

在 Mongo shell 中,查询非常简单。你可以使用类似的东西:

db.vehicle_stock.find({ $or: [ { stock_type: 'used', internet_price: { $gte: 123, $lte: 145 }}, { stock_type: 'new', internet_price: { $gte: 161, $lte: 184 }} ]});

您可以尝试使用 Alex Bilbie 的图书馆类似的东西:

$this.mongo_db->where(array(
  '$or' => array(
    array( 'stock_type' => 'used', 'internet_price' => array( '$gte' => 123, '$lte' => 145 )),
    array( 'stock_type' => 'new', 'internet_price' => array( '$gte' => 161, '$lte' => 184 ))
  )
));
于 2012-10-01T06:49:12.203 回答