MongoDB不在date范围内

我想查询不在数据范围内的数据。

我正在阅读文档,发现$not$nin ,但我不知道如何应用$not逻辑运算符和$nin运算符。 我试图包装$不,但它会抛出一个错误告诉

 Unknown Top Level Operator: $nin or $not 

我基本上想要查询获取date范围内的数据,我可以简单地使用$gt$lt ,但我有一些复杂的数据。

我有两个字段startDateendDate ,我应该使用这两个字段来根据用户select的数据范围来查询数据。

支持用户select2017-10-01 to 2017-10-10startDate会小于2017-10-01endDate在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 } } ] }] } 

beginend是一个时刻的对象

任何帮助都感激不尽。

排除

startDateendDate <'2017-10-01'

startDateendDate >'2017-10-10'

这基本上意味着你想find文件,其中startDate和endDate都落在所选date范围之间。 为此,您可以使用以下查询

 coll.find({'startDate': {'$gt': begin, '$lt': end},'endDate': {'$gt': begin, '$lt': end}})