在TaffyDB中使用OR条件" lte"和" gte"

时间:2015-07-11 15:09:30

标签: javascript taffydb

我在太妃糖DB中的数据看起来像这样。数据点可以为空白:

{"first_name":"Sam", "last_name": "Andrew", "age":26 ... }
{"first_name":"Jane", "last_name": "Doe", "age": 19 ... } 
{"first_name":"John", "last_name": "Deer", "age":51 ... }
.
.
.

如果我需要名字是" John"或"简",年龄在40到60之间,查询将是:

{
    "name":["John","Jane"], 
    "age":{"lte":60,"gte":40}
}

现在,如果我添加年龄小于20的条件,我无法为此编写查询。

我试过这个,但它不起作用:

{
    "name":["John","Jane"], 
    "age":[{"lte":60,"gte":40},{"lte":20}]
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

有助于将其分解为与年龄相关的or语句和名称与年龄and语句。

您希望名称条件年龄条件(包含自己的or

标准and语句通常写为(伪代码)

db({name_condition, age_condition})

但也可以写成

db({name_condition},{age_condition})

需要第二种表示法来完成您正在寻找的复合条件。

因为您的整个年龄条件实际上只是一个简单的or语句,所以您将它放在一个数组中。

[
  {age:{"lte":20}},
  {age:{"gte":40,"lte":60}}
]

年龄小于20 年龄介于40至60岁之间。

名称条件很简单

{first_name:["John","Jane"]}

将这两个对象放在一起成为and语句,如下所示:

db({first_name:["John","Jane"]},[{age:{"lte":20}},{age:{"gte":40,"lte":60}}])