2016-02-28 86 views
0

假設我有一個表的東西這些文件:過濾器,其中屬性是提供的數組

{ 
    "name": "Cali", 
    "state": "CA" 
}, 
{ 
    "name": "Vega", 
    "state": "NV", 
}, 
{ 
    "name": "Wash", 
    "state": "WA" 
} 

我的UI是一個國家選擇器,用戶可以選擇多個狀態。我想顯示適當的結果。在SQL相當於將是:

SELECT * FROM Things WHERE state IN ('CA', 'WA') 

我曾嘗試:

r.db('test').table('Things').filter(r.expr(['CA', 'WA']).contains(r('state'))) 

但這並不返回任何東西,我不明白爲什麼這不會奏效。


這適用於得到一個單一的國家:

r.db('test').table('Things').filter(r.row('state').eq('CA')) 

回答

1
r.db('test').table('Things').filter(r.expr(['CA', 'WA']).contains(r.row('state'))) 

似乎在某些版本的合作,並反正返回

[ 
    { 
    "id": "b20cdcab-35ab-464b-b10b-b2f644df73e6" , 
    "name": "Cali" , 
    "state": "CA" 
} , 
    { 
    "id": "506a4d1f-3752-409a-8a93-83385eb0a81b" , 
    "name": "Wash" , 
    "state": "WA" 
    } 
] 

,你可以使用一個函數,而不是r.row:

r.db('test').table('Things').filter(function(row) { 
    return r.expr(['CA', 'WA']).contains(row('state')) 
}) 
+0

這是我在複製/粘貼你的答案時得到的結果:http://i.imgur.com/DEheCV1.png'e:在嵌套查詢中不能使用r.row。使用功能,而不是' –

+0

編輯我的回答下面你的評論:P – Kludge

+0

啊,非常有趣。該功能起作用。我希望有一個更簡潔的方法 –

相關問題