我在太妃糖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}]
}
非常感谢任何帮助。
答案 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}}])