sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan udtrækker du et tidsstempel fra et MongoDB ObjectId i Spring Data MongoDB?

Det er nemt at få tider fra et ObjectId ... dog får du IKKE ms præcision.

org.bson.types.ObjectId har 2 metoder, du kan bruge på den:getTimeSecond() og getTime() (samme som `getTimeSecond() * 1000L ). Disse vil få dit unix-tidsstempel.

Jeg har ikke brugt MongoDB med Spring - men hvis du kan få fingrene i det faktiske ObjectId det er så simpelt som at kalde en af ​​metoderne ovenfor.

Nu - for at forespørge efter dokumenter inden for et tidsinterval skal du gå baglæns og oprette ObjectId objekter baseret på et tidsstempel. Igen - dette er enkelt - ObjectId har en konstruktør kan gøre dette for dig:

ObjectId(Date time)

Så - opret 2 ObjectId forekomster, der repræsenterer dine min. og maks. tidsgrænser, laver derefter en forespørgsel som:

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

hvor value1 og value2 repræsentere ObjectId forekomst, du oprettede via ObjectId(Date time)



  1. Få Set-værdi fra Redis ved hjælp af RedisTemplate

  2. Sådan sikkerhedskopieres og gendannes Mongodb-databasen

  3. Hvad ville være MongoDB C#-driveren, der svarer til følgende forespørgsel ved hjælp af array-opdateringsoperatoren $[<identifier>]

  4. Hvorfor afventer dette uden for asynkronfunktion?