MongoDb TTL auf verschachteltem Dokument ist möglich?
Ich möchte wissen, ob es möglich ist, TTL für verschachtelte Dokumente zu verwenden.
Szenarioich habeAccount
und innen habe ichSessions
. Sessions
müssen in 30 Minuten ablaufen. Ich habe alles eingerichtet, aber offensichtlich, wenn ich den TTL-Index einstelleAccount.Sessions.EndDateTime
es entfernt das ganzeAccount
. Kann ich sicherstellen, dass es nur entfernt wirdSession
?
So sieht es in der Datenbank aus. Beachten Sie, wie es ganz löschen wirdAccount
und nicht nurSession
wannEndDateTime
wird kommen.
{
"_id" : ObjectId("53af273888dba003f429540b"),
"Email" : "[email protected]",
"PasswordHash" : "CZaBEQRbwWNgJBjyhks7gH0Z3v5ZvDkW29pryF0DEXyE8rIw0NA4x39+uQneArKaUv97sP1e+e22YT1glbqQsw==",
"PasswordSalt" : "100000.Qx4D8uj7oDcWHRTLGRRTDwVkw2,UcaM52XkDR9k2ga073Ow==",
"Sessions" : [
{
"Token" : "da55cf0783c4249b26283948fcae6caa15df320ca456203045aea81cad691df8",
"IpAddress" : "::1",
"StartDateTime" : ISODate("2014-06-28T20:36:27.000Z"),
"EndDateTime" : ISODate("2014-06-28T21:06:27.000Z")
}
]
}
Hier erstelle ich den Index.
if (!_db.Accounts.IndexExists("Sessions.EndDateTime"))
{
_db.Accounts.CreateIndex(IndexKeys.Ascending("Sessions.EndDateTime"),
IndexOptions.SetTimeToLive(new TimeSpan(0)));
}