sql >> データベース >  >> NoSQL >> MongoDB

Spring DataMongoDBのMongoDBObjectIdからタイムスタンプをどのように抽出しますか?

    ObjectIdから時間を取得するのは簡単です ...ただし、msの精度は得られません。

    org.bson.types.ObjectId 使用できるメソッドが2つあります:getTimeSecond() およびgetTime()`getTimeSecond() * 1000Lと同じ )。これらはUNIXタイムスタンプを取得します。

    私はSpringでMongoDBを使用していませんが、実際のObjectIdを手に入れることができれば たとえば、上記のメソッドの1つを呼び出すのと同じくらい簡単です。

    今-時間範囲内のドキュメントをクエリするには、さかのぼってObjectIdを作成する必要があります タイムスタンプに基づくオブジェクト。繰り返しますが、これは単純です。ObjectId コンストラクターがあなたのためにこれを行うことができます:

    ObjectId(Date time)

    つまり、2つのObjectIdを作成します 次に、最小時間と最大時間の境界を表すインスタンスは、次のようなクエリを実行します。

    db.collection.find({ "field" : { $gt: value1, $lt: value2 } } );

    ここで、value1 およびvalue2 ObjectIdを表します ObjectId(Date time)を介して作成したインスタンス



    1. MongoDB-すべてのアイテムをループせずにJavaでコレクションをコピーします

    2. AlpineOS上のPhp7Redisクライアント

    3. Redisは文字列表現のみを許可し、数値は許可しませんか

    4. マングースクエリ:配列内のIDでオブジェクトを検索します