1

日付が似ているデータがいくつかあります。

  2013-03-26 05:33:15
  2013-03-26 16:48:39
  ...

そして、デフォルトの Date() 方法を使用してそれらをクエリと比較したくありません。昼間が一致するかどうか(時間:分+/- 10分)だけを知りたいからです。

たとえば、 をクエリすると、" "05:28:15を含むエントリが返されます。2013-03-26 05:33:15

「mongodbクエリのカスタマイズ」というキーワードを使用してヒントを見つけようとしましたが、結果が得られません。

これが可能かどうか、またはいくつかの代替手段があるかどうか疑問に思っています。

4

2 に答える 2

2

許容範囲を見つけて減算/追加し、範囲を使用して検索するのに時間がかかります。

from datetime import datetime, timedelta
from pymongo import MongoClient
client = MongoClient('localhost', 27017)

# Test Data
client.test.times.remove()
client.test.times.insert({ 'date': datetime(2013,03,26,05,33,15)})
client.test.times.insert({ 'date': datetime(2013,03,26,16,48,39)})


def get_approx_datetime(dt):
    start = dt-timedelta(minutes=10)
    end = dt+timedelta(minutes=10)
    return (start,end)


find_date = datetime(2013,03,26,05,28,15)
(start,end) = get_approx_datetime(find_date)


for time in client.test.times.find({ 'date': { '$gt': start, '$lt': end} }):
    print time

出力:

{u'date': datetime.datetime(2013, 3, 26, 5, 33, 15), u'_id': ObjectId('517cb34f1d41c806aec7c4ad')}
于 2013-04-28T05:30:09.867 に答える
0

$where句を使用して、時間と分の範囲のすべての一致を検索できます。たとえば、05:28 +/- 10 分に一致させたい場合:

client.collection.times.find({"$where": "this.Date.getHours() == 5 && this.Date.getMinutes() >= 18 && this.Date.getMinutes() <= 38"})
于 2013-05-02T19:30:36.420 に答える