ユーザーのコレクションがあり、2015 年に登録したすべてのユーザーを取得したいと考えています。
通常の日付文字列を使用すると、クエリを実行できます。
$query=[
'timestamp'=> [
'$regex' => "2015"
]
];
しかし、これを MongDate タイムスタンプで試してみると、もう機能しません。
何か案は?
MongoDB に格納されている日付は文字列ではなく、日付型です。これは文字列ではないため、正規表現と照合することはできません。代わりに、日付範囲で検索するだけです(高速にしたい場合は、日付フィールドにインデックスを付けます):
db.test.find({ "timestamp" : { "$gte" : ISODate("2015-01-01T00:00:00.000Z"), "$lt" : ISODate("2016-01-01T00:00:00.000Z") } })
私は PHP に詳しくないので、mongo シェル構文でクエリを書きました。