taffydb 在单个查询中使用 OR 和 AND
taffydb using OR and AND in single query
我的 TAFFYDB() 有这样的行(例如):
[
{"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"}
]
我想查询2个条件:
- morph 或 mot 的值必须为 1
- ph和osmo的值必须为0
用于匹配 rowID 的
我正在这样尝试:
var ret=anaDataDB(
[
[ [{"objID":"morph","objID":"mot"}] ,{ "objVal":1} ] ,
[ [{"objID":"osmo"} ] ,{ "objVal":0 } ],
[ [{"objID":"ph"} ] ,{ "objVal":0 } ]
]
).get();
但我得到的值太多了。例如,ph=1 的值。
我认为我拥有它的方式是使用 OR 并且我想要在 3 个比较之间进行 AND。
我该怎么做?
TaffyDB 的查询系统在您习惯之前有点笨拙。
它的简单技巧是:数组中的元素被视为 OR
条件的一部分。尝试对对象进行匹配。如果参数中的对象符合您要查找的记录,则返回。
var ans = anaDataDB(
[
{objID:["morph", "mot"], objVal:1},
{objID:["osmo", "ph"], objVal:0}
]
).get();
这个returns:
[ { 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 } ]
你是说:
"I want the record if it has an objID of "morph" OR
"mot" 其中 objVal 为 1,OR
如果记录的 objID 为 "osmo" OR
"ph" 其中 objVal 为 0。"
对象用于匹配,数组构成OR
。
我的 TAFFYDB() 有这样的行(例如):
[
{"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"}
]
我想查询2个条件:
- morph 或 mot 的值必须为 1
- ph和osmo的值必须为0
用于匹配 rowID 的
我正在这样尝试:
var ret=anaDataDB(
[
[ [{"objID":"morph","objID":"mot"}] ,{ "objVal":1} ] ,
[ [{"objID":"osmo"} ] ,{ "objVal":0 } ],
[ [{"objID":"ph"} ] ,{ "objVal":0 } ]
]
).get();
但我得到的值太多了。例如,ph=1 的值。 我认为我拥有它的方式是使用 OR 并且我想要在 3 个比较之间进行 AND。
我该怎么做?
TaffyDB 的查询系统在您习惯之前有点笨拙。
它的简单技巧是:数组中的元素被视为 OR
条件的一部分。尝试对对象进行匹配。如果参数中的对象符合您要查找的记录,则返回。
var ans = anaDataDB(
[
{objID:["morph", "mot"], objVal:1},
{objID:["osmo", "ph"], objVal:0}
]
).get();
这个returns:
[ { 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 } ]
你是说:
"I want the record if it has an objID of "morph" OR
"mot" 其中 objVal 为 1,OR
如果记录的 objID 为 "osmo" OR
"ph" 其中 objVal 为 0。"
对象用于匹配,数组构成OR
。