2015-03-24 36 views
4

在以下JSON中,我想選擇銷售量> 12500的記錄。我如何在ReThinkDB和ReQL中執行此操作?如何使用JavaScript在ReThinkDB中的ReQL中對數組應用過濾器

JSON是:

{ 
"address": { 
    "address_line1": "Address Line 1" , 
    "address_line2": "Address Line 2" , 
    "city": "Kochin" , 
    "country": "India" , 
    "state": "Kerala" 
    } , 
    "id": "bbe6a9c4-ad9d-4a69-9743-d5aff115b280" , 
    "name": "Dealer 1" , 
    "products": [ 
     { 
      "product_name": "Stabilizer" , 
      "sales": 12000 
     } , 
     { 
      "product_name": "Induction Cooker" , 
      "sales": 14000 
     } 
    ] 
    }, { 
    "address": { 
      "address_line1": "Address Line 1" , 
      "address_line2": "Address Line 2" , 
      "city": "Kochin" , 
      "country": "India" , 
      "state": "Kerala" 
    } , 
    "id": "f033a4c2-959c-4e2f-a07d-d1a688100ed7" , 
    "name": "Dealer 2" , 
    "products": [ 
      { 
      "product_name": "Stabilizer" , 
      "sales": 13000 
      } , 
      { 
      "product_name": "Induction Cooker" , 
      "sales": 11000 
      } 
     ] 

}

+0

找到更多的例子你想要什麼作爲這個輸出?產品列表如「{product_name:」穩定器「,銷售量:13000}」?或者至少有一個產品的銷售數量足夠高的所有文檔的完整文檔? – 2015-04-01 22:08:48

+0

我想爲任何產品的銷售額超過12,500的所有文檔提供完整文檔。那可能嗎? – KAdditude 2015-04-09 09:05:26

+0

好吧,這是有道理的。我在下面添加了我的答案。希望工程。 – 2015-04-10 21:21:23

回答

11

要獲得有超過12,500至少一個銷售價值任何產品的所有文件,您可以使用ReQL以下過濾器:

r.table('t') 
.filter(r.row('products').contains(function(product) { 
    return product('sales').gt(12500); 
})) 

這使用這個事實,你可以將一個函數傳遞到containsarray.contains(fun)返回true恰好如果fun返回true對於array中的至少一個元素。 你可以在http://rethinkdb.com/api/javascript/contains/

相關問題