2017-09-09 17 views
0

私は{"year":2016、 "day":364}の形式のデータを持つMongoDBデータベースを持っており、このデータベースは幅広い年を持っています。たとえば、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 } } 
    ] 
}) 

は基本的に、あなたは「$または」演算子を探しています。あなたの質問には、{年:2016、日:13}、{年:2017、日: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 } }) 
    ] 
}) 
関連する問題