我想查询不在数据范围内的数据。
我正在浏览文档并找到$not
和$nin
,但我不知道如何应用$not
逻辑运算符和$nin
运算符。我试图包装$ not但是它告诉我一个错误告诉
Unknown Top Level Operator: $nin or $not
我基本上想查询日期范围内的数据,我可以简单地使用$gt
和$lt
,但我的数据有点复杂。
我有两个字段startDate
和endDate
,我应该使用这两个字段根据用户选择的数据范围查询数据。
支持用户选择2017-10-01 to 2017-10-10
,我会在选择用户的日期范围之间的startDate
小于2017-10-01
和endDate
的数据很少(此方案应该查询时不排除),同样地,我可能会遇到与上述情况相反的情况,例如startDate
在用户选择的日期范围内,endDate
大于2017-10-10
。
我只是想排除
的位置**`startDate`** and **`endDate`** < '2017-10-01'
和
**`startDate`** and **`endDate`** > '2017-10-10'
我试过的代码,
$not: {
$or: [{
$and: [
{ "startDate" : { $lt: begin } },
{ "endDate" : { $lt: begin } }
]
},
{
$and: [
{ "startDate" : { $gt: end } },
{ "endDate" : { $gt: end } }
]
}]
}
其中begin
和end
是时刻对象
非常感谢任何帮助。
答案 0 :(得分:1)
不包括
startDate
和 endDate
&lt; &#39; 2017年10月1日&#39;
和
startDate
和 endDate
&gt; &#39; 2017年10月10日&#39;
这基本上意味着您要查找文档,其中startDate和endDate都位于所选日期范围之间。为此,您可以使用以下查询
coll.find({'startDate': {'$gt': begin, '$lt': end},'endDate': {'$gt': begin, '$lt': end}})