taffydb在单个查询中使用OR和AND

时间:2018-10-02 23:17:37

标签: javascript taffydb

我的TAFFYDB()具有如下所示的行:

SIP_HEADER

我想查询两种情况:

  1. morph或mot的值必须为1
  2. ph和osmo的值必须为0

用于匹配rowID的

我正在尝试这样:

[
{"rowID":0,"objID":"hema","objVal":1,"objType":"n"},
{"rowID":0,"objID":"osmo","objVal":1,"objType":"n"},
{"rowID":0,"objID":"mot","objVal":1,"objType":"n"},
{"rowID":0,"objID":"morph","objVal":1,"objType":"n"},
{"rowID":0,"objID":"ph","objVal":0,"objType":"n"},
{"rowID":0,"objID":"conc","objVal":0,"objType":"n"}
]

但是我得到了太多的价值。例如,值ph = 1。 我认为我拥有的方式是使用OR,并且我希望在3个比较之间进行AND。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

TaffyDB的查询系统在您习惯之前有点尴尬。

一个简单的技巧是:数组中的元素被视为OR条件的一部分。尝试对对象进行匹配。如果参数中的对象适合您要查找的记录,则将其返回。

var ans = anaDataDB(
    [
        {objID:["morph", "mot"], objVal:1},
        {objID:["osmo", "ph"], objVal:0}
    ]
    ).get();

这将返回:

[ { rowID: 0,
    objID: 'mot',
    objVal: 1,
    objType: 'n',
    ___id: 'T000002R000004',
    ___s: true },
  { rowID: 0,
    objID: 'morph',
    objVal: 1,
    objType: 'n',
    ___id: 'T000002R000005',
    ___s: true },
  { rowID: 0,
    objID: 'ph',
    objVal: 0,
    objType: 'n',
    ___id: 'T000002R000006',
    ___s: true } ]

您是说:

“如果记录的objID为“ osmo”,{{1},如果objVal为1,则我想要记录,如果它的objID为“ morph” OR,“ mot”,OR }“ ph”,其中objVal为0。”

对象用于匹配,数组组成OR