在chicagoboss中使用orelse(OR)编写查询

时间:2014-07-11 10:26:22

标签: mongodb erlang chicagoboss

我在Chicagoboss API中查找了这个查询,但找不到任何解决方案来编写" OR"查询。我必须写一个类似的查询:

select * from TableName where  table.key1 = "XXXX1" OR   table.key2 = "XXXX2"

这是我的chicagoboss查询,我想检查三个标志中的任何一个是否为真,然后对继承人做一些事情。

Heirs = boss_db:find(heir, [{flag1, 'equals', true}, {flag2, 'equals', true},
                            {flag3, 'equals', true}], [{order_by, code}]).

要执行此操作,是否有类似的内容:

Heirs = boss_db:find(heir, [{{flag1, 'equals', true}, orelse, {flag2, 'equals', true}, orelse, {flag3, 'equals', true}}], [{order_by, code}]).

2 个答案:

答案 0 :(得分:2)

根据documentationboss_db.erl的源代码,find/3似乎会返回与给定条件的所有匹配的记录。

您应该提交an issue on GitHub

SQL数据库存在变通方法(使用未记录的函数boss_db:find_by_sql/3),但是由于标记,您似乎没有使用MongoDB。因此,您必须通过多次调用来获取记录。

答案 1 :(得分:1)

您可以使用以下内容:

Var = case boss_db:find(heir,[{flag1, 'equals', true}]) of 
        Data -> Data;
        [] -> case boss_db:find(heir,[{flag2, 'equals', true}]) of 
                   Data -> Data;
                   [] -> "no data" 
              end 
      end.