MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como encontrar o horário da última atualização/inserção/exclusão na coleção mongodb sem o campo objectid


Para encurtar a história:o MongoDB tem um flexível esquema. Basta adicionar um campo de data. Como as entradas mais antigas não o possuem, elas não podem ser a última entrada.

Vamos chamar esse campo de mtime .

Então, depois de adicionar um campo de data à sua definição de esquema, geramos um índice em ordem decrescente no novo campo:
db.yourCollction.createIndex({mtime:-1})

Encontrar o último mtime para uma coleção agora é fácil:
db.yourCollection.find({"mtime":{"$exists":true}}).sort({"mtime":-1}).limit(1)

Faça isso para cada coleção. Quando a consulta acima não retornar um valor dentro do prazo que você definiu para limpar uma coleção, simplesmente descarte-o, pois ele não foi modificado desde que você introduziu o campo mtime.

Depois que suas coleções forem limpas, você poderá remover o mtime campo da sua definição de esquema. Para removê-lo dos documentos, você pode executar uma consulta simples:
db.yourCollection.update(
  { "mtime":{ $exists:true} },
  { "$unset":{ "mtime":""} },
  { multi: true}
)