MongoDB不在date范围内
我想查询不在数据范围内的数据。
我正在阅读文档,发现$not
和$nin
,但我不知道如何应用$not
逻辑运算符和$nin
运算符。 我试图包装$不,但它会抛出一个错误告诉
Unknown Top Level Operator: $nin or $not
我基本上想要查询获取date范围内的数据,我可以简单地使用$gt
和$lt
,但我有一些复杂的数据。
我有两个字段startDate
和endDate
,我应该使用这两个字段来根据用户select的数据范围来查询数据。
支持用户select2017-10-01 to 2017-10-10
, startDate
会小于2017-10-01
, endDate
在select用户的date范围之内(这个场景在查询时不应该被排除) ),同样我可能有一个相反的情况,如startDate
在用户select的date范围内, 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
是一个时刻的对象
任何帮助都感激不尽。
排除
startDate
和endDate
<'2017-10-01'
和
startDate
和endDate
>'2017-10-10'
这基本上意味着你想find文件,其中startDate和endDate都落在所选date范围之间。 为此,您可以使用以下查询
coll.find({'startDate': {'$gt': begin, '$lt': end},'endDate': {'$gt': begin, '$lt': end}})