2012-09-30 29 views
3

我建立了一個汽車網站,使用蒙戈他們自動存儲一個相當複雜的搜索公式。我發現其中大部分是非常簡單的。它目前支持通過車身樣式,新/使用等進行過濾。但是,如果我遇到問題,它會默認同時使用新車和二手車,因爲它們都具有單獨的價格範圍(計算出的最低和最高價格價格基於每月支付範圍)。我該如何做這項工作?結合AND和OR MongoDB中查詢

例如,如果它只是一個用於汽車,我們使用這個(笨)代碼:

$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 =新,WHERE_BETWEEN(A,B)
  • OR IF stock_type =假,WHERE_BETWEEN(C,d)

,並結合這與其他過濾器,如WHERE body_style IN(...)?

我們正在使用CodeIgniter和Alex Bilbie的mongodb庫,這可能會讓這裏的事情變得複雜。

回答

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 }} ]}); 

你可以試着與亞歷克斯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)) 
) 
));