0

我在 taffy 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”或“Jane”的所有行,年龄在 40 到 60 之间,查询将是:

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

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

我已经尝试过了,但它不起作用:

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

任何帮助将不胜感激。

4

1 回答 1

3

它有助于将其分解为与年龄相关的or陈述和姓名和年龄and陈述。

您想要 Name 条件Age 条件(包含它自己的or

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

db({name_condition, age_condition})

但也可以写成

db({name_condition},{age_condition})

需要第二个符号来完成您正在寻找的复合条件。

因为您的整个 Age 条件实际上是一个简单的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}}])
于 2016-02-02T17:32:23.490 回答