sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo encontrar el tiempo de la última operación de actualización/inserción/eliminación en la colección mongodb sin el campo objectid

Para abreviar una larga historia:MongoDB tiene un flexible esquema. Simplemente agregue un campo de fecha. Dado que las entradas más antiguas no lo tienen, no pueden ser la última entrada.

Llamemos a ese campo mtime .

Entonces, después de agregar un campo de fecha a la definición de su esquema, generamos un índice en orden descendente en el nuevo campo:

db.yourCollction.createIndex({mtime:-1})

Encontrar el último mtime para una colección ahora es fácil:

db.yourCollection.find({"mtime":{"$exists":true}}).sort({"mtime":-1}).limit(1)

Haga esto para cada colección. Cuando la consulta anterior no devuelva un valor dentro del período de tiempo que definió para purgar una colección, simplemente suéltelo, ya que no se ha modificado desde que introdujo el campo mtime.

Después de limpiar sus colecciones, puede eliminar el mtime de su definición de esquema. Para eliminarlo de los documentos, puede ejecutar una consulta simple:

db.yourCollection.update(
  { "mtime":{ $exists:true} },
  { "$unset":{ "mtime":""} },
  { multi: true}
)