0

単にUNIXタイムスタンプである「date」というフィールドを含むドキュメントが多数あります。リチウムについては、特定の日付範囲のすべてのドキュメントを検索したいと思います。私は現在次のことを試みています:

//$_stats contains two \DateTime objects which are properly initialized

$transactions = Transactions::all(
  array('conditions' => array(
                'tags' => array('$all' => array((string)$tag->_id)),
                'date' => array('$gte' => array((int)$_stats['date_start']->getTimestamp()), '$lte' => array((int)$_stats['date_end']->getTimestamp()))
  ))
);

しかし、これはゼロのドキュメントを返します。「日付」条件を削除すると、正常に機能し、すべてのドキュメントを取得できます。

私は何が欠けていますか?

ありがとう、aenogym

4

1 に答える 1

1

日付の配列を指定する必要はないようですので、おそらく次のことを試してください。

$transactions = Transactions::all(
  array('conditions' => array(
            'tags' => array('$all' => array((string)$tag->_id)),
            'date' => array('$gte' => (int)$_stats['date_start']->getTimestamp(), '$lte' => (int)$_stats['date_end']->getTimestamp())
  ))
);

MongoDateは日付をミリ秒として保存し、タイムスタンプは秒を使用することに注意してください。つまり、MongoDateの方が精度が高くなります。

于 2012-07-15T12:19:53.087 に答える