taffydb, используя OR и AND в одном запросе - PullRequest
0 голосов
/ 03 октября 2018

В моем 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

для соответствующих идентификаторов строк

Я пытаюсь так:

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

но я получаю слишком много значений.Например, значения, где ph = 1.Я думаю, что я использую ИЛИ и хочу И между 3 сравнениями.

Как мне это сделать?

1 Ответ

0 голосов
/ 06 апреля 2019

Система запросов 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" morph "OR" mot ", где objVal равно 1, OR, если запись имеет objID" osmo "OR" ph ", где objVal0. "

Объекты для сопоставления, массивы составляют OR.

...