sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan finder du sidste opdatering/indsæt/slet operationstid på mongodb-samling uden objektid-felt

For at gøre en lang historie kort:MongoDB har en fleksibel skema. Du skal blot tilføje et datofelt. Da ældre poster ikke har det, kan de ikke være den sidste post.

Lad os kalde det felt mtime .

Så efter at have tilføjet et datofelt til din skemadefinition, genererer vi et indeks i faldende rækkefølge på det nye felt:

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

Det er nemt at finde det sidste tidspunkt for en samling nu:

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

Gør dette for hver samling. Når ovenstående forespørgsel ikke returnerer en værdi inden for den tidsramme, du definerede for at rydde en samling, skal du blot slippe den, da den ikke er blevet ændret, siden du introducerede mtime-feltet.

Når dine samlinger er ryddet op, kan du fjerne mtime felt fra din skemadefinition. For at fjerne det fra dokumenterne kan du køre en simpel forespørgsel:

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


  1. Junit/Fongo:Sådan gør du brug af Fongo i enhedstesten til kontrol af NotNull

  2. Dynamisk Linq-prædikat kaster ikke-understøttet filterfejl med C# MongoDB-driver

  3. Option useFindAndModify understøttes ikke

  4. Hvordan får man max- og min-datoerne i en samling af dokumenter ved hjælp af jenssegers/laravel-mongodb-pakken?