MongoDb TTL auf verschachteltem Dokument ist möglich?

8

Ich möchte wissen, ob TTL für verschachtelte Dokumente verwendet werden kann.

Szenario

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.

%Vor%

Hier erstelle ich diesen Index.

%Vor%     
sed 28.06.2014, 20:40
quelle

1 Antwort

4

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.

    
Christian P 28.06.2014, 21:16
quelle