查询mongodb一段时间

时间:2017-09-09 21:27:26

标签: node.js mongodb database

我有一个MongoDB数据库,其数据格式为{“year”:2016,“day”:364},此数据库的年份范围很广。例如,如果我需要2016年第307至350天的文件,我会使用

Flux.find({year:{$gte:2016, $lt: 2016+1}, day: {$gte:307, $lt: 350}})

工作得很好。但如果我需要从2016年第350天到2017年第25天的文件,

Flux.find({year:{$gte:2016, $lt: 2017+1}, day: {$gte:350, $lt: 25}})

返回0个文件。请告诉我解决此问题的好方法

2 个答案:

答案 0 :(得分:0)

此查询即使有效,也会返回2016年第0-25天的数据,这是不正确的。 使用MongoDB的$or运算符来实现正确的查询。像这样:

dbFlux.find({
  $or: [
      { year:{ $gte: 2016, $lt: 2016+1 }, day: { $gte: 350 } }),
      { year:{ $gte: 2017, $lt: 2017+1 }, day: { $lt: 25 } })
  ]
})

答案 1 :(得分:0)

以下答案是正确的,但只是一个简单的修改,

Flux.find({
    $or : [
        { year: 2016, day: {$gte: 350} },
        { year: 2017, day: {$lte: 25 } }
    ]
})

基本上,您正在寻找" $或"运营商。您的查询问题是{year:2016,day:13}和{year:2017,day:364}等记录也将通过。