Erstellen Sie einen bedingten TTL in mongo

Gibt es eine Besondere Aufgabe, die ich erreichen will , aber ich bin nicht auf der Suche nach einer bestimmten Art und Weise zu tun.
Können sagen, ich habe eine app, die verwendet wird zum senden von mails. Ich halte Rekord von diese E-Mail ist in einer Sammlung in mongo. Und mit dieser app kann ich E-mail senden jetzt oder planen, können mails für die Zukunft.
Die Struktur der Dokumente in der Sammlung ist wie :

{
'_id' : 123456789,
'to_email' : '[email protected]'
'from_email' : '[email protected]'
'subject': 'some subject'
'type' : '<1 if normal and 2 if scheduled>',
'createdDate' '<date when mail was sent or the request was created>',
'scheduledDate' : '<time for which mail is scheduled>'
.. and many more key-value pairs
}

Den scheduledDate Feld kann null sein, oder ein beliebiges Datum, je nachdem, ob Ihre geplante oder nicht.
Ich will nicht zu halten, Daten die älter als 2 Tage sind, so habe ich eine TTL-index auf "createdDate", für 2 Tage.
Aber ich habe auch nicht wollen, zum löschen von Zeilen oder Anträge, die geplant sind für die Zukunft.
Ich war auf der Suche nach irgendeiner Art von bedingten TTL, konnte aber nicht finden, eine solche Lösung.

Gibt es alles, was wie bedingte TTL oder andere Weise zu tun itin mongodb.

Ich möchte erstellen Sie eine TTL, die arbeiten wie :

if(requestType!=2 and createdDate < -2days)
delete row;

oder gibt es eine Möglichkeit, wo ich änderungen vornehmen können, um bestimmte Dokumente mit jeder Sprache, so dass Sie dont get abgelaufen.

EDIT : habe das Problem gelöst, indem gleiche Werte für scheduledDate und requestDate im Falle von geplanten E-mails.

InformationsquelleAutor kadamb | 2016-02-03
Schreibe einen Kommentar