簡體   English   中英

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個條件:

  1. morph或mot的值必須為1
  2. 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();

返回:

[ { 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 } ]

您是在說:

“如果記錄的objVal為1,則它的objID為“ morph” OR “ mot”, OR如果記錄的objID為“ osmo” OR “ ph”,則該記錄為objVal為0。

對象用於匹配,數組進行OR

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM