Home > Software design >  Filter dates stored as int on MongoDB
Filter dates stored as int on MongoDB

Time:11-18

I have several documents on MongoDB collection that were created with an invalid date value and have it currently as:

"UpdateDate " : Date(-62135596800000)

I want to filter those documents, but my query is not returning any data:

db.MyCollection.find({UpdateDate : Date(-62135596800000)})

How can I filter my collection to retrieve those documents?

CodePudding user response:

The problem with your query is that you need to build a proper Date object. This may be different depending on what languaje or drivers are you using to query, but in JS just using new Date() should work.

db.MyCollection.find({UpdateDate : new Date(-62135596800000)})

CodePudding user response:

If you cant reproduce what the value need to be , luckily the date when you have inserted the document for the first time you can extract and update from the document _id as follow:

db.getCollection('MyCollection').update({ UpdateDate : new Date(-62135596800000) 
},
  [
{ "$set": { "UpdateDate": { $toLong: { $toDate: "$_id" }}}}
 ],
 { "multi" : true}
 )

This is with the assumption that you havent customized the default _id

  • Related