sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur extraherar du en tidsstämpel från ett MongoDB ObjectId i Spring Data MongoDB?

Det är lätt att få tider från ett ObjectId ... men du får INTE ms precision.

org.bson.types.ObjectId har 2 metoder som du kan använda på den:getTimeSecond() och getTime() (samma som `getTimeSecond() * 1000L ). Dessa kommer att få din unix-tidsstämpel.

Jag har inte använt MongoDB med Spring - men om du kan få tag på det faktiska ObjectId det är så enkelt som att anropa en av metoderna ovan.

Nu - för att söka efter dokument inom ett tidsintervall måste du gå bakåt och skapa ObjectId objekt baserat på en tidsstämpel. Återigen - det här är enkelt - ObjectId har en konstruktör kan göra detta åt dig:

ObjectId(Date time)

Så - skapa 2 ObjectId instanser som representerar dina min- och maxtidsgränser gör sedan en fråga som:

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

där value1 och value2 representerar ObjectId instans du skapade via ObjectId(Date time)



  1. Hur man kommer igång med databasautomatisering

  2. Hur hittar man nscanned i mongoose?

  3. MongoDB och Mongoid i produktion

  4. Lägg till arrayvärden i MongoDB där elementet inte är i array