MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да намерите времето за последно актуализиране/вмъкване/изтриване на колекция mongodb без поле objectid

Накратко:MongoDB има гъвкав схема. Просто добавете поле за дата. Тъй като по-старите записи го нямат, те не могат да бъдат последният запис.

Нека наречем това поле mtime .

Така че след добавяне на поле за дата към вашата дефиниция на схема, ние генерираме индекс в низходящ ред на новото поле:

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

Намирането на последния mtime за колекция сега е лесно:

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

Направете това за всяка колекция. Когато горната заявка не върне стойност в рамките на времевата рамка, която сте дефинирали за изчистване на колекция, просто я изпуснете, тъй като тя не е била променяна, откакто сте въвели полето mtime.

След като вашите колекции бъдат изчистени, можете да премахнете mtime поле от вашата дефиниция на схема. За да го премахнете от документите, можете да изпълните проста заявка:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Възможно ли е Meteor.js с Cassandra вместо MongDB?

  2. Как да генерирате уникален идентификатор на обект в mongodb

  3. Моето действие на PlayFramework се връща преди бъдещето да е готово, как да актуализирам компонент на уеб страница?

  4. Mongoose findById() в обект от вложени схеми/поддокументи - агрегиране

  5. Проблем с MongoDB GridFS запазване на файлове с Node.JS