3

自動ストレージにmongoを使用している自動車Webサイトのかなり複雑な検索式を構築しています。そのほとんどは非常に簡単であることがわかりました。現在、ボディ スタイル、新車/中古車などによるフィルタリングをサポートしています。しかし、私が問題に遭遇しているのは、新車と中古車の両方にデフォルト設定されているところです。毎月の支払い範囲に基づく価格)。どうすればこれを機能させることができますか?

たとえば、使用済みの自動車の場合は、次の (CodeIgniter) コードを使用しています。

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

新車でも同様のことを行っています。単独でうまく機能します。これらを組み合わせて見つけられるようにするにはどうすればよいですか

  • IF 在庫の種類 = 新規、WHERE_BETWEEN(a, b)
  • または IF 在庫の種類 = false, WHERE_BETWEEN(c, d)

そして、これを WHERE body_style IN (...) などの他のフィルターと組み合わせますか?

私たちは CodeIgniter と Alex Bilbie の mongodb ライブラリを使用しているため、ここで事態が複雑になる可能性があると考えています。

4

1 に答える 1

0

Mongo シェルでは、クエリは非常に簡単です。次のようなものを使用できます。

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 に答える