Ich möchte wissen, ob TTL für verschachtelte Dokumente verwendet werden kann.
Ich habe Account
und drinnen habe ich Sessions
. Sessions
muss in 30 Minuten ablaufen. Ich habe alles eingerichtet, aber offensichtlich, wenn ich den TTL-Index auf Account.Sessions.EndDateTime
setze, wird die gesamte Account
entfernt. Kann ich sicherstellen, dass nur Session
entfernt wird?
So sieht es in der Datenbank aus. Beachten Sie, dass es ganze Account
und nicht nur Session
löscht, wenn EndDateTime
kommt.
Hier erstelle ich diesen Index.
%Vor%Das ist derzeit mit dem TTL-Index nicht möglich. Mongod entfernt das gesamte Dokument nach einer bestimmten Anzahl von Sekunden oder zu einer bestimmten Uhrzeit.
TTL basiert auf einem Hintergrund-Thread in mongod, der das Datum eintippt Werte im Index und entfernt abgelaufene Dokumente aus der Sammlung.
Ich würde empfehlen, dass Sie das Unterdokument der Sitzung in einer separaten Sammlung speichern und einen TTL-Index für diese Sammlung hinzufügen.
Wenn Sie Ihr Schema nicht ändern können, besteht die Alternative darin, einen Hintergrundjob zu erstellen, der verschachtelte Dokumente alle 60 Sekunden aus Ihrer Sammlung löscht.
Tags und Links c# indexing mongodb mongodb-.net-driver ttl