2010-12-15 14 views
2

MongoDBの日付の値を細かく並べ替えることはできますか?MongoDBの日付の並べ替えの粒度?

私は結果を日付で注文したいが、私は時/分/秒のデータは気にしない。私は '20101215'のような追加のパラメータを保存する必要はありません。

+1

ソート時に完全な日付が使用されていると、それは気にする必要はありません。 DateTimeでソートされている場合でも、Dateによってソートされます。 –

+1

@Hightechriderユースケースは、ニュースサイト用です。ニュースアイテムの作成時間と更新時間を保存しますが、サイトの先頭ページ(たとえば2010年12月17日)をソートする必要があります。正確なタイムスタンプでソートすると、他のすべての要素は無意味です。各項目は、その日に異なる時間/分/秒を持つためです。 MySQLでは、 'ORDER BY DATE(created)、priority'の行に沿って何かします。 – ceejayoz

答えて

1

あなたの質問に対する短い答えは「いいえ」です。別のフィールドを保存しなければ不可能です。可能であれば、Mongoで並べ替えるときにソートするフィールドのインデックスを作成する必要があります。そうしないと、dbはソートを行うためにdb内のすべてのドキュメントをスキャンする必要があります。ですから、あなたが提案していることをやっていたら、部分的な日付フィールドでインデックスを作成する必要もあります。これはmongoでも不可能です。

私は、最良のアプローチは、年/月/日と時間/分/秒の2つのフィールドを格納することだと思います。並べ替えとインデックス作成の柔軟性が向上します。あなたが好きかもしれないほど清潔で理想的ではありませんが、それはdbの唯一のオプションです。

もう1つの選択肢は、結果が戻った後にアプリケーションで注文を絞り込むことです。

関連する問題