2017-09-09 207 views
0

我有一個MongoDB數據庫,數據格式爲{「year」:2016,「day」:364},這個數據庫的年份範圍很廣。例如,如果我需要2016年以來的文檔,從307天到350天,我使用了查詢mongodb一段時間

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個文檔。請讓我知道什麼是解決這個問題的好方法

回答

0

下面的答案是正確的,但只是一個簡單的修改,

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

基本上,你正在尋找「$或」運算符。您的查詢存在的問題是,諸如{year:2016,day:13}和{year:2017,day:364}之類的記錄也會通過。

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 } }) 
    ] 
})