0

mongoDb で 2:00 より大きく 8:00 より短い時間を取得したいと考えています。ただし、私のデータは次のようになります。

{"時間": "4:35"}

コロンがあると、"db.collection.find( { time: { $gt: 2, $lt: 8 } } )" のようなクエリを作成できなくなります。これをクエリする方法はありますか? (おそらく、内部データを変更せずに 4:35 を 435 に解析します)

4

2 に答える 2

1

2 から 8 の間の時間を検索したいだけなら、おそらくこれを試すことができます。

db.collection.find( { time: { $gt: "2:00", $lt: "8:00" } } )

これは私がこれをテストするために行ったことです。コレクションにいくつかのデータを挿入しました。リストは次のとおりです。

db.time.find({},{"_id":0})
{ "mytime" : "4:35" }
{ "mytime" : "1:35" }
{ "mytime" : "6:35" }
{ "mytime" : "8:35" }
{ "mytime" : "10:35" }
{ "mytime" : "10:10" }

db.time.find( { mytime: { $gt: "2:00", $lt: "8:00" } }, {"_id":0} )
{ "mytime" : "4:35" }
{ "mytime": "6:35" }

于 2013-07-06T22:05:35.873 に答える
0

時間を文字列として保存するのは悪い考えです。残念ながら、MongoDB には専用の時間のみのデータ型はありませんが、文字列を使用するほど悪くない代替手段が 2 つあります。

  1. BSON 日付を使用します。年、月、日を格納すると逆効果になる場合は、これらすべてを同じ値に設定します (エポックの開始日である 1970 年 1 月 1 日はオプションです)。
  2. 整数を使用して、午前 0 時からの分数または秒数を表します。アプリケーション層で変換を行います。
于 2013-07-07T12:58:17.953 に答える